From 1e207c0a3f57514c40b49b70e96892ccca48d191 Mon Sep 17 00:00:00 2001 From: Jay Ajitbhai Sandesara <jay.ajitbhai.sandesara@cern.ch> Date: Wed, 23 Dec 2020 14:23:35 +0000 Subject: [PATCH] Moved from writing ntuple per event to per seed, for seeds seen by the SiSPSeededTrackFinder algorithm. --- .../python/InDetJobProperties.py | 8 +- .../share/ConfiguredNewTrackingSiPattern.py | 14 ++ .../src/SiSPSeededTrackFinder.cxx | 49 +++- .../SiSpacePointForSeed.h | 12 + .../SiSpacePointsProSeed.h | 26 +- .../src/SiSpacePointForSeed.cxx | 33 ++- .../src/SiSpacePointsProSeed.cxx | 23 +- .../SiSpacePointsSeed/SiSpacePointsSeed.h | 225 +++++++++++++++++- .../ISiSpacePointsSeedMaker.h | 10 +- .../SiSpacePointsSeedMaker_ATLxk.h | 57 ++++- .../SiSpacePointsSeedMaker_BeamGas.h | 4 + .../SiSpacePointsSeedMaker_Cosmic.h | 4 + .../SiSpacePointsSeedMaker_HeavyIon.h | 4 + .../SiSpacePointsSeedMaker_ITK.h | 4 + .../SiSpacePointsSeedMaker_LowMomentum.h | 4 + .../SiSpacePointsSeedMaker_Trigger.h | 4 + .../src/SiSpacePointsSeedMaker_ATLxk.cxx | 118 ++++++++- .../src/SiSpacePointsSeedMaker_BeamGas.cxx | 7 + .../src/SiSpacePointsSeedMaker_Cosmic.cxx | 7 + .../src/SiSpacePointsSeedMaker_HeavyIon.cxx | 7 + .../src/SiSpacePointsSeedMaker_ITK.cxx | 7 + .../SiSpacePointsSeedMaker_LowMomentum.cxx | 7 + .../src/SiSpacePointsSeedMaker_Trigger.cxx | 7 + .../src/SiTrackMaker_xk.cxx | 4 +- 24 files changed, 616 insertions(+), 29 deletions(-) diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py index bf315e2c2a9..7b9068cff2f 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py @@ -1192,13 +1192,18 @@ class nnCutLargeD0Threshold(InDetFlagsJobProperty): allowedTypes = ['float'] StoredValue = -1.0 +class writeSeedValNtuple(InDetFlagsJobProperty): + """Turn writing of seed validation ntuple on and off""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + class doTRTPIDNN(InDetFlagsJobProperty): """calculate NN-based TRT electron probability""" statusOn = True allowedTypes = ['bool'] StoredValue = True - ##----------------------------------------------------------------------------- ## 2nd step ## Definition of the InDet flag container @@ -2794,6 +2799,7 @@ _list_InDetJobProperties = [Enabled, doDigitalROTCreation, nnCutLargeD0Threshold, useMuForTRTErrorScaling, + writeSeedValNtuple, doTRTPIDNN ] for j in _list_InDetJobProperties: diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py index 64b02d8db79..5a6650eeed5 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py @@ -61,7 +61,10 @@ class ConfiguredNewTrackingSiPattern: # # ------------------------------------------------------------ + doSeedMakerValidation = InDetFlags.writeSeedValNtuple() + if InDetFlags.doSiSPSeededTrackFinder(): + # # --- Space points seeds maker, use different ones for cosmics and collisions # @@ -95,6 +98,17 @@ class ConfiguredNewTrackingSiPattern: SpacePointsOverlapName = InDetKeys.OverlapSpacePoints(), radMax = NewTrackingCuts.radMax(), RapidityCut = NewTrackingCuts.maxEta()) + + if doSeedMakerValidation: + + InDetSiSpacePointsSeedMaker.WriteNtuple = True + + from AthenaCommon.AppMgr import ServiceMgr + if not hasattr(ServiceMgr, 'THistSvc'): + from GaudiSvc.GaudiSvcConf import THistSvc + ServiceMgr += THistSvc() + + ServiceMgr.THistSvc.Output = ["valNtuples DATAFILE='SeedMakerValidation.root' OPT='RECREATE'"] if NewTrackingCuts.mode() == "Offline" or InDetFlags.doHeavyIon() or NewTrackingCuts.mode() == "ForwardTracks": InDetSiSpacePointsSeedMaker.maxdImpactPPS = NewTrackingCuts.maxdImpactPPSSeeds() diff --git a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx index c608055d1ec..29a40a8ef8f 100644 --- a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx +++ b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/src/SiSPSeededTrackFinder.cxx @@ -263,23 +263,39 @@ StatusCode InDet::SiSPSeededTrackFinder::newStrategy(const EventContext& ctx) co /// prepare a collection for the quality-sorted track canddiates std::multimap<double, Trk::Track*> qualitySortedTrackCandidates; + /// Get the value of the seed maker validation ntuple writing switch + bool doWriteNtuple = m_seedsmaker->getWriteNtupleBoolProperty(); + long EvNumber = 0.; //Event number variable to be used for the validation ntuple + + if (doWriteNtuple) { + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_evtKey,ctx); + if(!eventInfo.isValid()) {EvNumber = -1.0;} else {EvNumber = eventInfo->eventNumber();} + } + /// Loop through all seeds from the first pass and attempt to form track candidates while ((seed = m_seedsmaker->next(ctx, seedEventData))) { + ++counter[kNSeeds]; /// we only want to fill the Z histo with the first candidate for each seed. bool firstTrack{true}; - /// combinatorial track finding for one given seed - std::list<Trk::Track*> trackList = m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints()); - /// record found candidates - for (Trk::Track* t: trackList) { - qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t)); - /// For the first (highest quality) track from each seed, populate the vertex finding histograms - if (firstTrack and not m_ITKGeometry) { - fillZHistogram(t, beamPosPerigee, numberHistogram, zWeightedHistogram, ptWeightedHistogram); - } - firstTrack = false; - } + /// copy all the tracks into trackList + std::list<Trk::Track*> trackList = m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints()); + /// record track candidates found, using combinatorial track finding, from the given seed + for (Trk::Track* t: trackList) { + + qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t)); + + /// For the first (highest quality) track from each seed, populate the vertex finding histograms + if (firstTrack and not m_ITKGeometry) { + fillZHistogram(t, beamPosPerigee, numberHistogram, zWeightedHistogram, ptWeightedHistogram); + } + firstTrack = false; + } + /// Call the ntuple writing method + if(doWriteNtuple) { m_seedsmaker->writeNtuple(seed, !trackList.empty() ? trackList.front() : nullptr, ISiSpacePointsSeedMaker::StripSeed, EvNumber) ; } + + if (counter[kNSeeds] >= m_maxNumberSeeds) { ERR = true; ++m_problemsTotal; @@ -307,17 +323,24 @@ StatusCode InDet::SiSPSeededTrackFinder::newStrategy(const EventContext& ctx) co /// Again, loop over the newly found seeds and attempt to form track candidates while ((seed = m_seedsmaker->next(ctx, seedEventData))) { + ++counter[kNSeeds]; - /// insert the new tracks into the quality-sorted list - for (Trk::Track* t: m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints())) { + + std::list<Trk::Track*> trackList = m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints()); + + for (Trk::Track* t: trackList) { qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t)); } + + if(doWriteNtuple) { m_seedsmaker->writeNtuple(seed, !trackList.empty() ? trackList.front() : nullptr, ISiSpacePointsSeedMaker::PixelSeed, EvNumber); } + if (counter[kNSeeds] >= m_maxNumberSeeds) { ERR = true; ++m_problemsTotal; break; } } + m_trackmaker->endEvent(trackEventData); /// Remove shared tracks with worse quality diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointForSeed.h b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointForSeed.h index 2879259be24..31d942ba06e 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointForSeed.h +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointForSeed.h @@ -46,6 +46,10 @@ namespace InDet { void set(const Trk::SpacePoint*const&,const float*,const float*); void setQuality(float); void setParam(const float&); + void setD0(const float&); + void setEta(const float&); + void setDZDR(const float&); + void setPt(const float&); void setScorePenalty(const float& par) {m_scorePenalty=par;} const Trk::SpacePoint* spacepoint; @@ -56,9 +60,13 @@ namespace InDet { float phi() const {return atan2(m_y,m_x);} const float& covr() const {return m_covr;} const float& covz() const {return m_covz;} + const float& d0() const {return m_d0;} + const float& eta() const {return m_eta;} const float& param() const {return m_param;} /// impact parameter const float& scorePenalty() const {return m_scorePenalty;} /// penalty term in the seed score const float& quality() const {return m_q ;} /// quality of the best seed this candidate was seen on + const float& dzdr() const {return m_dzdr;} + const float& Pt() const {return m_pt;} const Trk::Surface* sur() const {return m_su;} const Trk::Surface* sun() const {return m_sn;} @@ -70,6 +78,10 @@ namespace InDet { float m_r ; // radius in beam system coordinates float m_covr; // float m_covz; // + float m_d0; + float m_eta; + float m_dzdr; + float m_pt; float m_param; /// impact parameter float m_scorePenalty; /// penalty term in the seed score float m_q ; /// quality of the best seed this candidate was seen on diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsProSeed.h b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsProSeed.h index f7595db7d84..1efc685eb9f 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsProSeed.h +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsProSeed.h @@ -39,7 +39,15 @@ namespace InDet { SiSpacePointForSeed* spacepoint0() {return m_s0;} SiSpacePointForSeed* spacepoint1() {return m_s1;} SiSpacePointForSeed* spacepoint2() {return m_s2;} + const float& d0() const {return m_d0;} const float& z() const {return m_z ;} + const float& eta() const {return m_eta;} + const float& z1() const {return m_z1;} + const float& z2() const {return m_z2;} + const float& z3() const {return m_z3;} + const float& r1() const {return m_r1;} + const float& r2() const {return m_r2;} + const float& r3() const {return m_r3;} const float& quality() const {return m_q ;} void set(SiSpacePointForSeed*&,SiSpacePointForSeed*&,SiSpacePointForSeed*&,float); @@ -49,11 +57,19 @@ namespace InDet { private: - SiSpacePointForSeed* m_s0; - SiSpacePointForSeed* m_s1; - SiSpacePointForSeed* m_s2; - float m_z ; - float m_q ; + SiSpacePointForSeed* m_s0 ; + SiSpacePointForSeed* m_s1 ; + SiSpacePointForSeed* m_s2 ; + float m_d0 ; + float m_z ; + float m_eta ; + float m_z1 ; + float m_z2 ; + float m_z3 ; + float m_r1 ; + float m_r2 ; + float m_r3 ; + float m_q ; }; } // end of name space diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointForSeed.cxx b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointForSeed.cxx index b1716d8257d..2701e4d01ee 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointForSeed.cxx +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointForSeed.cxx @@ -21,6 +21,10 @@ namespace InDet { m_covr = 0.; m_covz = 0.; m_param = 0.; + m_d0 = 0.; + m_eta = 0.; + m_dzdr = 0.; + m_pt = 0.; m_q = 0.; m_su = 0 ; m_sn = 0 ; @@ -38,6 +42,10 @@ namespace InDet { m_covr = sp.m_covr ; m_covz = sp.m_covz ; m_q = sp.m_q ; + m_dzdr = sp.m_dzdr ; + m_d0 = sp.m_d0 ; + m_eta = sp.m_eta ; + m_pt = sp.m_pt ; m_su = sp.m_su ; m_sn = sp.m_sn ; } @@ -47,13 +55,13 @@ namespace InDet { SiSpacePointForSeed::SiSpacePointForSeed (const Trk::SpacePoint*const& sp,const float* r) { - set(sp,r); m_param = 0.; + set(sp,r); m_param = 0.; } SiSpacePointForSeed::SiSpacePointForSeed (const Trk::SpacePoint*const& sp,const float* r,const float* sc) { - set(sp,r,sc); m_param = 0.; + set(sp,r,sc); m_param = 0.; } ///////////////////////////////////////////////////////////////////////////////// @@ -157,9 +165,30 @@ namespace InDet { { m_param = p; } + + void SiSpacePointForSeed::setD0(const float& d0) + { + m_d0 = d0; + } + + void SiSpacePointForSeed::setEta(const float& eta) + { + m_eta = eta; + } + void SiSpacePointForSeed::setQuality(float q) { if(q <= m_q) m_q = q; } + + void SiSpacePointForSeed::setDZDR(const float& dzdr) + { + m_dzdr = dzdr; + } + + void SiSpacePointForSeed::setPt(const float& pt) + { + m_pt = pt; + } } // end of name space diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointsProSeed.cxx b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointsProSeed.cxx index 4894433ae64..c300db866c1 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointsProSeed.cxx +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiSpacePointsProSeed.cxx @@ -13,6 +13,8 @@ namespace InDet { m_s0 = 0 ; m_s1 = 0 ; m_s2 = 0 ; + m_d0 = 0.; + m_eta = 0.; m_z = 0.; m_q = 0.; } @@ -22,7 +24,9 @@ namespace InDet { { if(&sp!=this) { + m_d0 = sp.m_d0; m_z = sp.m_z ; + m_eta = sp.m_eta; m_q = sp.m_q ; m_s0 = sp.m_s0; m_s1 = sp.m_s1; @@ -101,7 +105,24 @@ namespace InDet { s.add(m_s0->spacepoint); s.add(m_s1->spacepoint); s.add(m_s2->spacepoint); - s.setZVertex(double(m_z)); + s.setD0(m_s2->param()); + s.setZVertex(double(m_z)); + s.setEta(m_s2->eta()); + s.setX1(m_s0->x()); + s.setX2(m_s1->x()); + s.setX3(m_s2->x()); + s.setY1(m_s0->y()); + s.setY2(m_s1->y()); + s.setY3(m_s2->y()); + s.setZ1(m_s0->z()); + s.setZ2(m_s1->z()); + s.setZ3(m_s2->z()); + s.setR1(m_s0->radius()); + s.setR2(m_s1->radius()); + s.setR3(m_s2->radius()); + s.setDZDR_B(m_s0->dzdr()); + s.setDZDR_T(m_s2->dzdr()); + s.setPt(m_s2->Pt()); return true; } diff --git a/InnerDetector/InDetRecEvent/SiSpacePointsSeed/SiSpacePointsSeed/SiSpacePointsSeed.h b/InnerDetector/InDetRecEvent/SiSpacePointsSeed/SiSpacePointsSeed/SiSpacePointsSeed.h index b05bb2581cb..e0b293a8b7b 100755 --- a/InnerDetector/InDetRecEvent/SiSpacePointsSeed/SiSpacePointsSeed/SiSpacePointsSeed.h +++ b/InnerDetector/InDetRecEvent/SiSpacePointsSeed/SiSpacePointsSeed/SiSpacePointsSeed.h @@ -47,9 +47,45 @@ namespace InDet { virtual ~SiSpacePointsSeed(); void erase(); void add(const Trk::SpacePoint*&); + void setD0 (const double&); void setZVertex(const double&); + void setEta (const double&); + void setX1 (const double&); + void setX2 (const double&); + void setX3 (const double&); + void setY1 (const double&); + void setY2 (const double&); + void setY3 (const double&); + void setZ1 (const double&); + void setZ2 (const double&); + void setZ3 (const double&); + void setR1 (const double&); + void setR2 (const double&); + void setR3 (const double&); + void setDZDR_B (const double&); + void setDZDR_T (const double&); + void setPt (const double&); + const std::vector<const Trk::SpacePoint*>& spacePoints() const; + const double& d0 () const; const double& zVertex () const; + const double& eta () const; + const double& x1 () const; + const double& x2 () const; + const double& x3 () const; + const double& y1 () const; + const double& y2 () const; + const double& y3 () const; + const double& z1 () const; + const double& z2 () const; + const double& z3 () const; + const double& r1 () const; + const double& r2 () const; + const double& r3 () const; + const double& dzdr_b () const; + const double& dzdr_t () const; + const double& pt () const; + virtual MsgStream& dump(MsgStream& out) const ; virtual std::ostream& dump(std::ostream& out) const ; @@ -60,7 +96,24 @@ namespace InDet { protected: std::vector<const Trk::SpacePoint*> m_spacepoints; - double m_zvertex ; + double m_d0 ; + double m_zvertex ; + double m_eta ; + double m_x1 ; + double m_x2 ; + double m_x3 ; + double m_y1 ; + double m_y2 ; + double m_y3 ; + double m_z1 ; + double m_z2 ; + double m_z3 ; + double m_r1 ; + double m_r2 ; + double m_r3 ; + double m_dzdr_b ; + double m_dzdr_t ; + double m_pt ; }; MsgStream& operator << (MsgStream& ,const SiSpacePointsSeed&); @@ -85,16 +138,186 @@ namespace InDet { m_spacepoints.push_back(p); } + inline void SiSpacePointsSeed::setD0(const double& d0) + { + m_d0 = d0; + } + inline void SiSpacePointsSeed::setZVertex(const double& z) { m_zvertex = z; } + inline void SiSpacePointsSeed::setEta(const double& eta) + { + m_eta = eta; + } + + inline void SiSpacePointsSeed::setX1(const double& x1) + { + m_x1 = x1; + } + + inline void SiSpacePointsSeed::setX2(const double& x2) + { + m_x2 = x2; + } + + inline void SiSpacePointsSeed::setX3(const double& x3) + { + m_x3 = x3; + } + + inline void SiSpacePointsSeed::setY1(const double& y1) + { + m_y1 = y1; + } + + inline void SiSpacePointsSeed::setY2(const double& y2) + { + m_y2 = y2; + } + + inline void SiSpacePointsSeed::setY3(const double& y3) + { + m_y3 = y3; + } + + inline void SiSpacePointsSeed::setZ1(const double& z1) + { + m_z1 = z1; + } + + inline void SiSpacePointsSeed::setZ2(const double& z2) + { + m_z2 = z2; + } + + inline void SiSpacePointsSeed::setZ3(const double& z3) + { + m_z3 = z3; + } + + inline void SiSpacePointsSeed::setR1(const double& r1) + { + m_r1 = r1; + } + + inline void SiSpacePointsSeed::setR2(const double& r2) + { + m_r2 = r2; + } + + inline void SiSpacePointsSeed::setR3(const double& r3) + { + m_r3 = r3; + } + + inline void SiSpacePointsSeed::setDZDR_B(const double& dzdr) + { + m_dzdr_b = dzdr; + } + + inline void SiSpacePointsSeed::setDZDR_T(const double& dzdr) + { + m_dzdr_t = dzdr; + } + + inline void SiSpacePointsSeed::setPt(const double& pt) + { + m_pt = pt; + } + + inline const double& SiSpacePointsSeed::d0() const + { + return m_d0; + } + inline const double& SiSpacePointsSeed::zVertex() const { return m_zvertex; } + + inline const double& SiSpacePointsSeed::eta() const + { + return m_eta; + } + + inline const double& SiSpacePointsSeed::x1() const + { + return m_x1; + } + + inline const double& SiSpacePointsSeed::x2() const + { + return m_x2; + } + + inline const double& SiSpacePointsSeed::x3() const + { + return m_x3; + } + + inline const double& SiSpacePointsSeed::y1() const + { + return m_y1; + } + + inline const double& SiSpacePointsSeed::y2() const + { + return m_y2; + } + + inline const double& SiSpacePointsSeed::y3() const + { + return m_y3; + } + + inline const double& SiSpacePointsSeed::z1() const + { + return m_z1; + } + + inline const double& SiSpacePointsSeed::z2() const + { + return m_z2; + } + + inline const double& SiSpacePointsSeed::z3() const + { + return m_z3; + } + + inline const double& SiSpacePointsSeed::r1() const + { + return m_r1; + } + + inline const double& SiSpacePointsSeed::r2() const + { + return m_r2; + } + + inline const double& SiSpacePointsSeed::r3() const + { + return m_r3; + } + + inline const double& SiSpacePointsSeed::dzdr_b() const + { + return m_dzdr_b; + } + + inline const double& SiSpacePointsSeed::dzdr_t() const + { + return m_dzdr_t; + } + inline const double& SiSpacePointsSeed::pt() const + { + return m_pt; + } + } // end of name space #endif // SiSpacePointsSeed_h diff --git a/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiSpacePointsSeedMaker.h b/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiSpacePointsSeedMaker.h index e51088b9ea7..d166e6712cc 100644 --- a/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiSpacePointsSeedMaker.h +++ b/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiSpacePointsSeedMaker.h @@ -26,6 +26,8 @@ class MsgStream; +namespace Trk { class Track; } + namespace InDet { class SiSpacePointsSeed; @@ -126,7 +128,13 @@ namespace InDet { //@{ virtual const SiSpacePointsSeed* next(const EventContext& ctx, SiSpacePointsSeedMakerEventData& data) const =0; //@} - + + virtual void writeNtuple(const SiSpacePointsSeed* seed, const Trk::Track*, int seedType, long eventNumber) const =0; + + virtual bool getWriteNtupleBoolProperty() const =0; + + enum seedType { StripSeed = 0, PixelSeed = 1 }; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h index adc213c8c9e..1fa659963e5 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h @@ -22,6 +22,9 @@ #include "TrkSpacePoint/SpacePointContainer.h" #include "TrkSpacePoint/SpacePointOverlapCollection.h" #include "TrkEventUtils/PRDtoTrackMap.h" +#include "GaudiKernel/ITHistSvc.h" +#include "TFile.h" +#include "TTree.h" ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // MagField cache @@ -35,6 +38,8 @@ #include <vector> class MsgStream; +//class TFile; +//class TTree; namespace InDet { @@ -117,7 +122,16 @@ namespace InDet { **/ virtual const SiSpacePointsSeed* next(const EventContext& ctx, EventData& data) const override; //@} - + + /** This method is called by the SiSPSeededTrackFinder algorithm to fill ntuples for + * seeds seen by the algorithm. seedType represents Pixel/SCT type seeds, where 0->SCT + * and 1->Pixel. givesTrack is determined by whether or not the given seed forms atleast + * one track candidate. 0->No track candidate 1->At least one track Candidate + **/ + virtual void writeNtuple(const SiSpacePointsSeed* seed, const Trk::Track* track, int seedType, long eventNumber) const; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// @@ -475,6 +489,47 @@ namespace InDet { * @return true if the seed is confirmed, false otherwise **/ bool isConfirmedSeed(const InDet::SiSpacePointForSeed* bottomSP, const InDet::SiSpacePointForSeed* topSP, float quality) const; + + ///Flag to write validation ntuples. Turned off by default + Gaudi::Property<bool> m_writeNtuple {this, "WriteNtuple", false, "Flag to write Validation Ntuples"}; + + ITHistSvc* m_thistSvc; + + TFile* m_outputFile; + TTree* m_outputTree; + + mutable std::mutex m_mutex; + + mutable std::string m_treeName ATLAS_THREAD_SAFE; + mutable TString m_treeFolder ATLAS_THREAD_SAFE; + + mutable float m_d0 ATLAS_THREAD_SAFE; + mutable float m_z0 ATLAS_THREAD_SAFE; + mutable float m_pt ATLAS_THREAD_SAFE; + mutable float m_eta ATLAS_THREAD_SAFE; + mutable double m_x1 ATLAS_THREAD_SAFE; + mutable double m_x2 ATLAS_THREAD_SAFE; + mutable double m_x3 ATLAS_THREAD_SAFE; + mutable double m_y1 ATLAS_THREAD_SAFE; + mutable double m_y2 ATLAS_THREAD_SAFE; + mutable double m_y3 ATLAS_THREAD_SAFE; + mutable double m_z1 ATLAS_THREAD_SAFE; + mutable double m_z2 ATLAS_THREAD_SAFE; + mutable double m_z3 ATLAS_THREAD_SAFE; + mutable double m_r1 ATLAS_THREAD_SAFE; + mutable double m_r2 ATLAS_THREAD_SAFE; + mutable double m_r3 ATLAS_THREAD_SAFE; + mutable float m_quality ATLAS_THREAD_SAFE; + mutable int m_type ATLAS_THREAD_SAFE; + mutable int m_status ATLAS_THREAD_SAFE; + mutable double m_dzdr_t ATLAS_THREAD_SAFE; + mutable double m_dzdr_b ATLAS_THREAD_SAFE; + mutable bool m_givesTrack ATLAS_THREAD_SAFE; + mutable float m_trackD0 ATLAS_THREAD_SAFE; + mutable float m_trackZ0 ATLAS_THREAD_SAFE; + mutable float m_trackPt ATLAS_THREAD_SAFE; + mutable float m_trackEta ATLAS_THREAD_SAFE; + mutable long m_eventNumber ATLAS_THREAD_SAFE; }; } // end of name space diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_BeamGas.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_BeamGas.h index ce9990ce62b..5ec5f5ba0e1 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_BeamGas.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_BeamGas.h @@ -111,6 +111,10 @@ namespace InDet { 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; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Cosmic.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Cosmic.h index 9dabc1d84eb..a72164353de 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Cosmic.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Cosmic.h @@ -108,6 +108,10 @@ namespace InDet { 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; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_HeavyIon.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_HeavyIon.h index 9dd38fd4534..19e54527894 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_HeavyIon.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_HeavyIon.h @@ -109,6 +109,10 @@ namespace InDet { 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; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ITK.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ITK.h index a744dc44eaf..b922f7a3866 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ITK.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ITK.h @@ -111,6 +111,10 @@ namespace InDet { 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; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_LowMomentum.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_LowMomentum.h index aa55a92ed6d..153db9d6f5b 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_LowMomentum.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_LowMomentum.h @@ -109,6 +109,10 @@ namespace InDet { 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; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Trigger.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Trigger.h index 92375cc65ee..6ffa79a5ee9 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Trigger.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_Trigger.h @@ -107,6 +107,10 @@ namespace InDet { 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; + + virtual bool getWriteNtupleBoolProperty() const; + /////////////////////////////////////////////////////////////////// /// @name Print internal tool parameters and status /////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx index b039fc6bae1..36a72a60852 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx @@ -16,6 +16,10 @@ #include "InDetPrepRawData/SiCluster.h" #include "InDetReadoutGeometry/SiDetectorElement.h" +#include "TrkTrack/Track.h" +#include "TrkParameters/TrackParameters.h" + +#include "StoreGate/ReadCondHandle.h" #include <iomanip> #include <ostream> @@ -25,7 +29,11 @@ InDet::SiSpacePointsSeedMaker_ATLxk::SiSpacePointsSeedMaker_ATLxk (const std::string& t,const std::string& n,const IInterface* p) - : base_class(t, n, p) + : base_class(t, n, p), + m_thistSvc(nullptr), + m_outputTree(nullptr), + m_treeName(""), + m_treeFolder("/valNtuples/") { } @@ -62,6 +70,46 @@ StatusCode InDet::SiSpacePointsSeedMaker_ATLxk::initialize() dump(data, msg(MSG::DEBUG)); } + if (m_writeNtuple) { + + ATH_CHECK( service("THistSvc",m_thistSvc) ); + + m_treeName = (std::string("SeedTree_")+name()); + std::replace( m_treeName.begin(), m_treeName.end(), '.', '_' ); + + m_outputTree = new TTree( m_treeName.c_str() , "SeedMakerValTool"); + + m_outputTree->Branch("eventNumber", &m_eventNumber); + m_outputTree->Branch("d0", &m_d0); + m_outputTree->Branch("z0", &m_z0); + m_outputTree->Branch("pt", &m_pt); + m_outputTree->Branch("eta", &m_eta); + m_outputTree->Branch("x1", &m_x1); + m_outputTree->Branch("x2", &m_x2); + m_outputTree->Branch("x3", &m_x3); + m_outputTree->Branch("y1", &m_y1); + m_outputTree->Branch("y2", &m_y2); + m_outputTree->Branch("y3", &m_y3); + m_outputTree->Branch("z1", &m_z1); + m_outputTree->Branch("z2", &m_z2); + m_outputTree->Branch("z3", &m_z3); + m_outputTree->Branch("r1", &m_r1); + m_outputTree->Branch("r2", &m_r2); + m_outputTree->Branch("r3", &m_r3); + m_outputTree->Branch("quality", &m_quality); + m_outputTree->Branch("seedType", &m_type); + m_outputTree->Branch("givesTrack", &m_givesTrack); + m_outputTree->Branch("dzdr_b", &m_dzdr_b); + m_outputTree->Branch("dzdr_t", &m_dzdr_t); + m_outputTree->Branch("track_pt", &m_trackPt); + m_outputTree->Branch("track_eta", &m_trackEta); + + TString fullTreeName = m_treeFolder + m_treeName; + + ATH_CHECK( m_thistSvc->regTree( fullTreeName.Data(), m_outputTree ) ); + + } + return sc; } @@ -147,6 +195,7 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::newEvent(const EventContext& ctx, Even // by the user for strip seeds data.maxSeedsPerSP = m_maxOneSizeSSS; data.keepAllConfirmedSeeds = m_alwaysKeepConfirmedStripSeeds; + } ///< end if-statement for iteration 0 else { /// for the second iteration (PPP pass), don't redo the full init required the first time data.r_first = 0; ///< reset the first radial bin @@ -154,6 +203,7 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::newEvent(const EventContext& ctx, Even // by the user for pixel seeds data.maxSeedsPerSP = m_maxOneSizePPP; data.keepAllConfirmedSeeds = m_alwaysKeepConfirmedPixelSeeds; + /// call fillLists to repopulate the candidate space points and exit fillLists(data); return; @@ -1767,6 +1817,7 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::production3Sp if(z0 > zmax || z0 < zmin) continue; /// found a bottom SP candidate, write it into the data object data.SP[Nb] = (*iter_otherSP); + if(m_writeNtuple) data.SP[Nb]->setDZDR(dZdR); /// if we are exceeding the SP capacity of our data object, /// make it resize its vectors. Will add 50 slots by default, /// so rarely should happen more than once per event. @@ -1815,6 +1866,7 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::production3Sp if(z0 > zmax || z0 < zmin) continue; /// add SP to the list data.SP[Nt] = (*iter_otherSP); + if (m_writeNtuple) data.SP[Nt]->setDZDR(dZdR); /// if we are exceeding the SP capacity of our data object, /// make it resize its vectors. Will add 50 slots by default, /// so rarely should happen more than once per event. @@ -1904,6 +1956,11 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::production3Sp /// average value of 1/tan(theta), approximate the slope at the location of the central space point float meanOneOverTanTheta = (Tzb+data.Tz[t])/2.; + float theta = 0.; + if(m_writeNtuple){ + /// theta estimate of the seed based on the average value of 1/tan(theta) + theta = atan(1./meanOneOverTanTheta); + } /// squared error on the difference in tan(theta) due to space point position errors. float sigmaSquaredSpacePointErrors = Erb+data.Er[t] /// pre-computed individual squared errors on 1/tan(theta) for the two segments + 2. * covz0 * data.R[t]*data.R[b] /// mixed term with z-uncertainty on central SP @@ -1956,7 +2013,6 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::production3Sp * pt. This refines the cut applied above, following the same logic ("delta² - sigma² ?<=0") **/ if (BSquare > ipt2K*onePlusAsquare || remainingSquaredDelta*onePlusAsquare > BSquare*sigmaSquaredScatteringPtDependent) continue; - /** This is an estimate of the transverse impact parameter. * The reasoning is that, in the x-y frame with the central SP as origin and * the x axis pointing away from the IP, we have for the distance between @@ -1992,11 +2048,18 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::production3Sp /// deviate from a straight line in r-z data.SP[t]->setScorePenalty(std::abs((Tzb-data.Tz[t])/(dr*sTzb2))); data.SP[t]->setParam(d0); + + if(m_writeNtuple){ + /// set parameters for ntuple writing + data.SP[t]->setEta(-log(tan(0.5*theta))); + data.SP[t]->setPt(std::sqrt(onePlusAsquare/BSquare)/(1000*data.K)); + } /// record one possible seed candidate, sort by the curvature data.CmSp.emplace_back(std::make_pair(B/std::sqrt(onePlusAsquare), data.SP[t])); /// store the transverse IP, will later be used as a quality estimator } + } ///< end loop over top space point candidates /// now apply further cleaning on the seed candidates for this central+bottom pair. if (!data.CmSp.empty()) { @@ -2006,6 +2069,7 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::production3Sp ///record seeds found in this run fillSeeds(data); nseed += data.fillOneSeeds; + } ///< end loop over central SP } @@ -2386,6 +2450,7 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::newOneSeedWithCurvaturesComparison void InDet::SiSpacePointsSeedMaker_ATLxk::fillSeeds(EventData& data) const { + data.fillOneSeeds = 0; std::multimap<float,InDet::SiSpacePointsProSeed*>::iterator it_firstSeedCandidate = data.mapOneSeeds_Pro.begin(); @@ -2442,6 +2507,7 @@ const InDet::SiSpacePointsSeed* InDet::SiSpacePointsSeedMaker_ATLxk::next(const } /// iterate until we find a valid seed satisfying certain quality cuts in set3 } while (!(*data.i_seed_Pro++).set3(data.seedOutput)); + /// then return this next seed candidate return &data.seedOutput; } else { @@ -2456,6 +2522,50 @@ const InDet::SiSpacePointsSeed* InDet::SiSpacePointsSeedMaker_ATLxk::next(const return nullptr; } +/////////////////////////////////////////////////////////////////////////////////// +/// Method to write ntuple entries for an input seed +/////////////////////////////////////////////////////////////////////////////////// +void InDet::SiSpacePointsSeedMaker_ATLxk::writeNtuple(const SiSpacePointsSeed* seed, const Trk::Track* track, int seedType, long eventNumber) const{ + + if(m_writeNtuple) { + std::lock_guard<std::mutex> lock(m_mutex); + + if(track != nullptr) { + m_trackPt = (track->trackParameters()->front()->pT())/1000.; + m_trackEta = std::abs(track->trackParameters()->front()->eta()); + } + else { + m_trackPt = -1.; + m_trackEta = -1.; + } + m_d0 = seed->d0(); + m_z0 = seed->zVertex(); + m_eta = seed->eta(); + m_x1 = seed->x1(); + m_x2 = seed->x2(); + m_x3 = seed->x3(); + m_y1 = seed->y1(); + m_y2 = seed->y2(); + m_y3 = seed->y3(); + m_z1 = seed->z1(); + m_z2 = seed->z2(); + m_z3 = seed->z3(); + m_r1 = seed->r1(); + m_r2 = seed->r2(); + m_r3 = seed->r3(); + m_type = seedType; + m_dzdr_b = seed->dzdr_b(); + m_dzdr_t = seed->dzdr_t(); + m_pt = seed->pt(); + m_givesTrack = !(track == nullptr); + m_eventNumber = eventNumber; + + m_outputTree->Fill(); + + } + +} + bool InDet::SiSpacePointsSeedMaker_ATLxk::isZCompatible (EventData& data, const float& Zv, const float& R, const float& T) const { @@ -2562,3 +2672,7 @@ bool InDet::SiSpacePointsSeedMaker_ATLxk::isConfirmedSeed(const InDet::SiSpacePo /// PPS: the confirmation is the only quality modifier applied else return (quality < 0.); } + +bool InDet::SiSpacePointsSeedMaker_ATLxk::getWriteNtupleBoolProperty() const{ + return m_writeNtuple; +} diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_BeamGas.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_BeamGas.cxx index 2c7400366b8..3ebae905d6d 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_BeamGas.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_BeamGas.cxx @@ -1216,3 +1216,10 @@ void InDet::SiSpacePointsSeedMaker_BeamGas::initializeEventData(EventData& data) 0, // sizeRFZV not used false); // checkEta not used } + +void InDet::SiSpacePointsSeedMaker_BeamGas::writeNtuple(const SiSpacePointsSeed*, const Trk::Track*, int, long) const{ +} + +bool InDet::SiSpacePointsSeedMaker_BeamGas::getWriteNtupleBoolProperty() const{ + return false; +} diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Cosmic.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Cosmic.cxx index bbfc2e54f25..d1ef2528e3d 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Cosmic.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Cosmic.cxx @@ -1160,3 +1160,10 @@ void InDet::SiSpacePointsSeedMaker_Cosmic::initializeEventData(EventData& data) 0, // sizeRFZV not used false); // checkEta not used } + +void InDet::SiSpacePointsSeedMaker_Cosmic::writeNtuple(const SiSpacePointsSeed*, const Trk::Track*, int, long) const{ +} + +bool InDet::SiSpacePointsSeedMaker_Cosmic::getWriteNtupleBoolProperty() const{ + return false; +} diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_HeavyIon.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_HeavyIon.cxx index 423b40ddfde..297a3a60f3a 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_HeavyIon.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_HeavyIon.cxx @@ -1743,3 +1743,10 @@ void InDet::SiSpacePointsSeedMaker_HeavyIon::initializeEventData(EventData& data SizeRFZV, false); // checkEta not used } + +void InDet::SiSpacePointsSeedMaker_HeavyIon::writeNtuple(const SiSpacePointsSeed*, const Trk::Track*, int, long) const{ +} + +bool InDet::SiSpacePointsSeedMaker_HeavyIon::getWriteNtupleBoolProperty() const{ + return false; +} diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ITK.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ITK.cxx index acc9bb73cea..aabcf9cd641 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ITK.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ITK.cxx @@ -2077,3 +2077,10 @@ void InDet::SiSpacePointsSeedMaker_ITK::initializeEventData(EventData& data) con SizeRFZV, m_checketa); } + +void InDet::SiSpacePointsSeedMaker_ITK::writeNtuple(const SiSpacePointsSeed*, const Trk::Track*, int, long) const{ +} + +bool InDet::SiSpacePointsSeedMaker_ITK::getWriteNtupleBoolProperty() const{ + return false; +} diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_LowMomentum.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_LowMomentum.cxx index 3f075123c6b..b0fb2dc7cd7 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_LowMomentum.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_LowMomentum.cxx @@ -1184,3 +1184,10 @@ void InDet::SiSpacePointsSeedMaker_LowMomentum::initializeEventData(EventData& d 0, // sizeRFZV not used false); // checkEta not used } + +void InDet::SiSpacePointsSeedMaker_LowMomentum::writeNtuple(const SiSpacePointsSeed*, const Trk::Track*, int, long) const{ +} + +bool InDet::SiSpacePointsSeedMaker_LowMomentum::getWriteNtupleBoolProperty() const{ + return false; +} diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Trigger.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Trigger.cxx index 61db8694e7a..4bae1bd01ec 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Trigger.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_Trigger.cxx @@ -1664,3 +1664,10 @@ void InDet::SiSpacePointsSeedMaker_Trigger::initializeEventData(EventData& data) SizeRFZV, false); // checkEta not used } + +void InDet::SiSpacePointsSeedMaker_Trigger::writeNtuple(const SiSpacePointsSeed*, const Trk::Track*, int, long) const{ +} + +bool InDet::SiSpacePointsSeedMaker_Trigger::getWriteNtupleBoolProperty() const{ + return false; +} diff --git a/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx b/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx index ac26da25831..8c775c0772e 100644 --- a/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx +++ b/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx @@ -565,8 +565,8 @@ void InDet::SiTrackMaker_xk::newTrigEvent(const EventContext& ctx, SiTrackMakerE data.inputseeds() = 0; data.goodseeds() = 0; data.findtracks() = 0; - for(int i=0; i!=SiCombinatorialTrackFinderData_xk::kNStatAllTypes; ++i) { for(int k = 0; k!=SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++k) data.summaryStatAll()[i][k]; } - for(int i=0; i!=SiCombinatorialTrackFinderData_xk::kNStatEtaTypes; ++i) { for(int k = 0; k!=SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++k) { for(int r=0; r!=SiCombinatorialTrackFinderData_xk::kNRapidityRanges; ++r) data.summaryStatUsedInTrack()[i][k][r]; } } + for(int i=0; i!=SiCombinatorialTrackFinderData_xk::kNStatAllTypes; ++i) { for(int k = 0; k!=SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++k) data.summaryStatAll()[i][k] = 0.; } + for(int i=0; i!=SiCombinatorialTrackFinderData_xk::kNStatEtaTypes; ++i) { for(int k = 0; k!=SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++k) { for(int r=0; r!=SiCombinatorialTrackFinderData_xk::kNRapidityRanges; ++r) data.summaryStatUsedInTrack()[i][k][r] = 0.; } } } -- GitLab