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 "GaudiKernel/ToolFactory.h"
002 #include "GaudiKernel/SmartDataPtr.h"
003 #include "GaudiKernel/IDataProviderSvc.h"
004 
005 //----------------------------------------------------------------//
006 #include "TrkTrack/Track.h"
007 
008 //----------------------------------------------------------------//
009 #include "muonEvent/Muon.h"
010 #include "Particle/TrackParticle.h"
011 #include "Particle/TrackParticleContainer.h"
012 #include "IsolationTool/IIsolationTool.h"
013 
014 /////////////////////////////////////////////////////////
015 #include "STACOTools/StacoToCombinedMuonTool.h"
016 #include "StacoMuonQualityWordHelper.h"
017 
018 //----------------------------------------------------------------//
019 #include "STACOEvent/StacoObject.h"
020 
021 StacoToCombinedMuonTool::StacoToCombinedMuonTool(const std::string& t, 
022                                             const std::string& n,
023                                             const IInterface*  p ):AthAlgTool(t,n,p),
024  p_IIsolationTool("MuonIsolationTool/MuonIsolationTool")                                            
025 {
026 
027   declareInterface<IStacoToCombinedMuonTool>(this);
028 
029   declareProperty("IIsolationTool" ,p_IIsolationTool );
030 
031 }
032 
033 StacoToCombinedMuonTool::~StacoToCombinedMuonTool(){}
034 
035 // Initialize
036 StatusCode StacoToCombinedMuonTool::initialize() {
037 
038   StatusCode sc = StatusCode::SUCCESS;
039 
040   sc = AthAlgTool::initialize(); 
041   if ( sc.isFailure() ) {
042     msg(MSG::FATAL) << " AthAlgTool::initialize() failed" << endreq;
043     return( StatusCode::FAILURE );
044   }
045 
046 
047 //Retrieve p_IIsolationTool
048   if ( p_IIsolationTool.retrieve().isFailure() ) {
049     msg(MSG::WARNING) << "Failed to retrieve tool " << p_IIsolationTool << endreq;
050     p_IIsolationTool = 0 ;
051   }else{
052     msg(MSG::INFO) << "Retrieved tool " << p_IIsolationTool << endreq;
053   }
054 
055   msg(MSG::INFO) << "Initialisation ended     " << endreq;
056 
057   return StatusCode::SUCCESS;
058 
059 }
060 
061 // Finalize
062 StatusCode StacoToCombinedMuonTool::finalize(){return StatusCode::SUCCESS;}
063 
064 // Convert
065 Analysis::Muon*  StacoToCombinedMuonTool::convert(
066                          const StacoObject*                 pStacoObject,
067                          const Rec::TrackParticleContainer* pTPIDColl  ,
068                          const Rec::TrackParticleContainer* pTPMSColl ,
069                          const Rec::TrackParticleContainer* pTPMSOnlyColl ,
070                          const Rec::TrackParticleContainer* pTPStacoColl    ,
071                          const Rec::TrackParticle*          pTrackPartStaco  
072 ){
073 
074 
075   const Rec::TrackParticle* pTrackPartID     = pStacoObject->MuIdet();
076 
077   const Rec::TrackParticle* pTrackPartMS     = pStacoObject->MuSpectro();
078     
079   const Rec::TrackParticle* pTrackPartMSOnly = pStacoObject->MuSpectroMSOnly();
080     
081   //Now create a MS Standalone for eta > 2.5
082   if(pTrackPartID==0) {
083     Analysis::Muon* MuonSA = new Analysis::Muon(
084        MuonParameters::STACO,
085        pTrackPartMS,
086        true);
087        
088     MuonSA->set_muonExtrapolatedTrackParticleContainer(pTPMSColl); 
089 
090 //Hopefully temporary 
091     if (pTrackPartMSOnly) {
092       MuonSA->set_muonSpectrometerTrackParticle(pTPMSOnlyColl,pTrackPartMSOnly);
093     }else{
094       MuonSA->set_muonSpectrometerTrackParticle(pTPMSColl,pTrackPartMS);
095     }
096 
097     //Calculate parametrized energy loss     
098     double paramEnergy = pStacoObject->Eloss();
099     double paramEnergyErr = 0.20 * paramEnergy ;
100     Trk::EnergyLoss aEnergyLoss (paramEnergy, paramEnergyErr);
101     
102     MuonSA->set_bestMatch(false);
103   //calculate track isolation energy  
104     if (p_IIsolationTool){
105       StatusCode sc = p_IIsolationTool->dressing( MuonSA, &aEnergyLoss  );
106       if ( sc.isFailure() )  msg(MSG::WARNING) << "Fail to dress muon " << endreq;
107     }
108 
109     if ( MuonSA ) {
110       StacoMuonQualityWordHelper aStacoMuonQualityWordHelper ;
111       MuonQualityWord aMuonQualityWord ;
112       aStacoMuonQualityWordHelper.Set_isTight(aMuonQualityWord) ;
113       MuonSA->set_isMuonBits(aMuonQualityWord);
114     }
115 
116     return MuonSA ;
117 
118 
119   }else{
120   //Now create a CombinedMuon 0.< eta <2.5 
121  
122       Analysis::Muon* CBMuon = new Analysis::Muon(
123         MuonParameters::STACO,
124         pTrackPartID, 
125         pTrackPartMS, 
126         pTrackPartStaco);
127 
128     CBMuon->set_muonExtrapolatedTrackParticleContainer(pTPMSColl);
129     CBMuon->set_inDetTrackParticleContainer(pTPIDColl);
130     CBMuon->set_combinedMuonTrackParticleContainer(pTPStacoColl);
131     
132 //Hopefully temporary 
133     if (pTrackPartMSOnly) {
134       CBMuon->set_muonSpectrometerTrackParticle(pTPMSOnlyColl,pTrackPartMSOnly);
135     }else{
136       CBMuon->set_muonSpectrometerTrackParticle(pTPMSColl,pTrackPartMS);
137     }
138 
139     //Calculate parametrized energy loss
140     double paramEnergy = pStacoObject->Eloss();
141     double paramEnergyErr = 0.20 * paramEnergy ;
142     Trk::EnergyLoss aEnergyLoss (paramEnergy, paramEnergyErr);
143     
144     CBMuon->set_bestMatch(true);
145     
146     double chi2CB = pTrackPartStaco->fitQuality()->chiSquared()-
147                     pTrackPartID->fitQuality()->chiSquared()-
148                     pTrackPartMS->fitQuality()->chiSquared();
149 
150     CBMuon->set_matchChi2(chi2CB);
151     int Nodf = 5;
152     CBMuon->set_matchNumberDoF(Nodf);
153     
154     if (p_IIsolationTool){
155       StatusCode sc = p_IIsolationTool->dressing( CBMuon, &aEnergyLoss  );
156       if ( sc.isFailure() )  msg(MSG::WARNING) << "Fail to dress muon " << endreq;
157     }
158 
159     if ( CBMuon ) {
160       StacoMuonQualityWordHelper aStacoMuonQualityWordHelper ;
161       MuonQualityWord aMuonQualityWord ;
162       aStacoMuonQualityWordHelper.Set_isTight(aMuonQualityWord) ;
163       CBMuon->set_isMuonBits(aMuonQualityWord);
164     }
165 
166     return CBMuon ;
167 
168   }     
169           
170   return 0;
171 
172 }

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!