Report problems to ATLAS LXR Team (with time and IP address indicated)

The LXR Cross Referencer

source navigation ]
diff markup ]
identifier search ]
general search ]
 
 
Architecture: linux ]
Version: head ] [ nightly ] [ GaudiDev ]
  Links to LXR source navigation pages for stable releases [ 12.*.* ]   [ 13.*.* ]   [ 14.*.* ]   [ 15.*.* ] 

001 #include "JetTagTools/BasicTrackGradeFactory.h"
002 #include "GaudiKernel/MsgStream.h"
003 
004 #include "JetTagInfo/TrackGrade.h"
005 
006 #include "TrkTrackSummary/TrackSummary.h"
007 #include "TrkToolInterfaces/ITrackSummaryTool.h"
008 #include "JetTagInfo/TrackGradesDefinition.h"
009 
010 #include "TrkTrack/Track.h"
011 #include "TrkParticleBase/TrackParticleBase.h"
012 
013 
014 namespace Analysis
015 {
016 
017 BasicTrackGradeFactory::BasicTrackGradeFactory( const std::string& t, const std::string& n, const IInterface* p ) :
018         AlgTool( t, n, p ),
019         m_trackSumTool("Trk::TrackSummaryTool"),
020         m_trackSumToolAvailable(false)
021 {
022 
023     declareProperty("useSharedHitInfo", m_useSharedHitInfo = false);
024     declareProperty("nSharedBLayer", m_nSharedBLayer = 0);
025     declareProperty("nSharedPix", m_nSharedPix = 0);
026     declareProperty("nSharedSct", m_nSharedSct = 1);
027     declareProperty("nSharedSi", m_nSharedSi = 999);
028 
029     declareProperty("TrackSummaryTool",m_trackSumTool);
030 
031     declareInterface<ITrackGradeFactory>( this );
032 }
033 
034 BasicTrackGradeFactory::~BasicTrackGradeFactory()
035 {}
036 
037 StatusCode BasicTrackGradeFactory::initialize()
038 {
039 
040   MsgStream log(msgSvc(), name());
041   
042   std::vector<TrackGrade> myGrades;
043 
044   if (!m_useSharedHitInfo)
045   {
046     myGrades.push_back(TrackGrade(0,std::string("Good")));
047   }
048   else
049   {
050     myGrades.push_back(TrackGrade(0,std::string("Good")));
051     myGrades.push_back(TrackGrade(1,std::string("Shared")));
052   }
053   
054   m_trackGradesDefinition=TrackGradesDefinition(myGrades);
055 
056   m_trackSumToolAvailable=false;
057   if (!m_trackSumTool.empty()) {
058     if(m_trackSumTool.retrieve().isFailure())
059       {
060         log<<MSG::INFO<<"#BTAG# Unable to retrieve. OK if running on AOD. "<<m_trackSumTool<<endreq;
061       }
062     else
063       {
064         log<<MSG::INFO<<"#BTAG# Track summary tool retrieved"<<endreq;  
065         m_trackSumToolAvailable=true;
066       }
067   }
068 
069   return StatusCode::SUCCESS;
070 }
071 
072 StatusCode BasicTrackGradeFactory::finalize()
073 {
074     return StatusCode::SUCCESS;
075 }
076 
077 TrackGrade* BasicTrackGradeFactory::getGrade(const Trk::Track & track,const HepLorentzVector &) const
078 {
079  
080  
081 // first ask track for summary
082   const Trk::TrackSummary* summary =track.trackSummary();
083   
084   if (summary == 0)
085   {
086     if (m_trackSumToolAvailable) 
087     {
088       // ugly but one needs to cast the const away because the method needs to update the track (the tool is a friend of track)
089       Trk::Track& nonConstTrack = const_cast<Trk::Track&>(track);
090       m_trackSumTool->updateTrack(nonConstTrack);
091       summary = nonConstTrack.trackSummary();
092     }
093     else 
094     {
095       MsgStream log(msgSvc(), name());
096       log << MSG::DEBUG <<
097           "#BTAG# No Track Summary Tool available. " << 
098           "This should be the case only when running on AOD" << endreq;
099     }
100   }
101   
102   if (summary==0)
103   {
104     MsgStream log(msgSvc(), name());
105     log << MSG::WARNING << "#BTAG# No track summary available for the track... Contact the developer! " << endreq;
106     return 0;
107   }
108   
109   return getGrade(*summary);
110   
111 }
112 
113 TrackGrade* BasicTrackGradeFactory::getGrade(const Trk::TrackParticleBase & myTPBase,const HepLorentzVector &) const
114 {
115 
116   //number of hits, silicon hits, b-layer
117   const Trk::TrackSummary* summary = myTPBase.trackSummary();
118       
119   if (0==summary ) { 
120     MsgStream log(msgSvc(),name());
121     log << MSG::WARNING << "#BTAG# Track preselection: cannot create a track summary (but useTrackSummary is true). Selection failed." << endreq;
122     return 0;
123   }
124 
125   return getGrade(*summary);
126 
127 }
128 
129 
130 const TrackGradesDefinition & BasicTrackGradeFactory::getTrackGradesDefinition() const
131 {
132   return m_trackGradesDefinition;
133 }
134 
135 
136 
137 //TrackGrade* BasicTrackGradeFactory::getGrade(const Trk::MeasuredPerigee &,
138 //                                             const Trk::TrackSummary & trackSummary,
139 //                                             const Trk::FitQuality &,
140 //                                             const HepLorentzVector & jetMomentum) const
141 TrackGrade* BasicTrackGradeFactory::getGrade(const Trk::TrackSummary & trackSummary) const
142 {
143 
144   bool sharedClass(false);
145 
146   if (m_useSharedHitInfo)
147   {
148 
149     int nbs = trackSummary.get(Trk::numberOfBLayerSharedHits); if(nbs < 0) nbs = 0;
150     int nps = trackSummary.get(Trk::numberOfPixelSharedHits); if(nps < 0) nps = 0;
151     int nss = trackSummary.get(Trk::numberOfSCTSharedHits); if(nss < 0) nss = 0;
152     int nsht =  nps+nss ;
153     
154     
155     
156     if(nbs>m_nSharedBLayer) {
157       sharedClass = true;
158     }
159     if(nps>m_nSharedPix) {
160       sharedClass = true;
161     }
162     if(nss>m_nSharedSct) {
163       sharedClass = true;
164     }
165     if(nsht>m_nSharedSi) {
166       sharedClass = true;
167     }
168   }
169   
170   const TrackGrade * gradeToReturn(0);
171 
172   if (sharedClass)
173   {
174 //    gradeToReturn=trackGradesDefinition.getGrade(std::string("Shared"));
175     gradeToReturn=m_trackGradesDefinition.getGrade(1);
176   }
177   else
178   {
179 //    gradeToReturn=trackGradesDefinition.getGrade(std::string("Good"));
180     gradeToReturn=m_trackGradesDefinition.getGrade(0);
181   }
182       
183   if (gradeToReturn==0)
184   {
185     MsgStream log(msgSvc(),name());
186     log << MSG::ERROR << "#BTAG# Grade not found. Internal error... " << endreq;
187   }
188 
189   return new TrackGrade(*gradeToReturn);
190   
191 }
192  
193 }
194 

source navigation ] diff markup ] identifier search ] general search ]

Due to the LXR bug, the updates fail sometimes to remove references to deleted files. The Saturday's full rebuilds fix these problems
This page was automatically generated by the LXR engine. Valid HTML 4.01!