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 "muonEvent/Muon.h"
007 #include "muonEvent/MuonContainer.h"
008 
009 #include "Particle/TrackParticle.h"
010 #include "Particle/TrackParticleContainer.h"
011 
012 #include "IsolationTool/IIsolationTool.h"
013 
014 /////////////////////////////////////////////////////////
015 #include "STACOTools/TrackParticleToAnalysisMuonExtrTool.h"
016 
017 //----------------------------------------------------------------//
018 #include "STACOToolsInterfaces/IStacoEDMHelper.h"
019 #include "StacoMuonQualityWordHelper.h"
020 
021 TrackParticleToAnalysisMuonExtrTool::TrackParticleToAnalysisMuonExtrTool(const std::string& t, 
022                                             const std::string& n,
023                                             const IInterface*  p ):AthAlgTool(t,n,p),
024  p_OwnEDMHelper ( "StacoEDMHelper/ConfiguredStacoEDMHelper" ) ,
025  p_IIsolationTool("MuonIsolationTool/MuonIsolationTool")                                              
026 {
027 
028   declareInterface<ITrackParticleToAnalysisMuonExtrTool>(this);
029 
030   declareProperty("StacoEDMHelper" , p_OwnEDMHelper ) ;
031   declareProperty("IIsolationTool" ,p_IIsolationTool );
032 
033 }
034 
035 TrackParticleToAnalysisMuonExtrTool::~TrackParticleToAnalysisMuonExtrTool(){}
036 
037 // Initialize
038 StatusCode TrackParticleToAnalysisMuonExtrTool::initialize() {
039 
040   msg(MSG::INFO) << "Initialisation started     " << endreq;
041 
042   StatusCode sc = AthAlgTool::initialize(); 
043   if ( sc.isFailure() ) {
044     msg(MSG::FATAL)  << " AthAlgTool::initialize() failed" << endreq;
045     return( StatusCode::FAILURE );
046   }
047 
048 
049 //Retrieve p_OwnEDMHelper
050   if ( p_OwnEDMHelper.retrieve().isFailure() ) {
051     msg(MSG::FATAL) << "Failed to retrieve tool " << p_OwnEDMHelper << endreq;
052     return StatusCode::FAILURE;
053   }
054   msg(MSG::INFO) << "Retrieved tool " << p_OwnEDMHelper << endreq;
055 
056 //Retrieve p_IIsolationTool
057   if ( p_IIsolationTool.retrieve().isFailure() ) {
058     msg(MSG::WARNING) << "Failed to retrieve tool " << p_IIsolationTool << endreq;
059     p_IIsolationTool = 0 ;
060   }else{
061     msg(MSG::INFO) << "Retrieved tool " << p_IIsolationTool << endreq;
062   }
063 
064   msg(MSG::INFO) << "Initialisation ended     " << endreq;
065 
066   return StatusCode::SUCCESS;
067 
068 }
069 
070 // Finalize
071 StatusCode TrackParticleToAnalysisMuonExtrTool::finalize(){return StatusCode::SUCCESS;}
072 
073 // Convert
074 StatusCode TrackParticleToAnalysisMuonExtrTool::convertCollection(
075                                 const Rec::TrackParticleContainer* pTrackParticleContainer ,
076                                 const Rec::TrackParticleContainer* pTrackParticleContainer_MSonly,
077                                 Analysis::MuonContainer*           pCombinedMuonContainer
078 ){
079 
080 
081 //Align TrackParticleContainers
082   std::vector<const Rec::TrackParticle*> AuxVecColl_Aligned = 
083     p_OwnEDMHelper->AlignTrackParticleContainers(pTrackParticleContainer,pTrackParticleContainer_MSonly);
084 
085   std::vector<const Rec::TrackParticle*>::iterator it_AuxVecColl_Aligned  = AuxVecColl_Aligned.begin();
086   Rec::TrackParticleContainer::const_iterator it     = pTrackParticleContainer->begin() ;
087   Rec::TrackParticleContainer::const_iterator it_End = pTrackParticleContainer->end()   ;
088   for ( ; it!=it_End ; ++it,++it_AuxVecColl_Aligned){               
089     const Rec::TrackParticle* pTrackParticle       = *it;
090     const Rec::TrackParticle* pTrackParticleMSONly = *it_AuxVecColl_Aligned;
091 
092     Analysis::Muon* pCombinedMuon = convert(
093                                             pTrackParticleContainer,
094                                             pTrackParticleContainer_MSonly,
095                                             pTrackParticle,
096                                             pTrackParticleMSONly
097                                            );
098 
099     if (!pCombinedMuon ) msg(MSG::DEBUG) << " convert failed " <<endreq;
100 
101     if ( pCombinedMuon ) pCombinedMuonContainer->push_back(pCombinedMuon); 
102 
103   } 
104 
105 
106   return StatusCode::SUCCESS;
107 
108 }
109 
110 Analysis::Muon* TrackParticleToAnalysisMuonExtrTool::convert(
111                            const Rec::TrackParticleContainer* pTrackParticleContainer ,
112                            const Rec::TrackParticleContainer* pTrackParticleContainer_MSonly,
113                            const Rec::TrackParticle*          pTrackParticle,
114                            const Rec::TrackParticle*          pTrackParticleMSONly
115 ){
116 
117   StatusCode sc = StatusCode::SUCCESS;
118 
119 
120   //Now create a Muon Standalone
121   Analysis::Muon* pCombinedMuon = new Analysis::Muon(
122      MuonParameters::Muonboy,
123      pTrackParticle,
124      true);
125 
126   pCombinedMuon->set_muonExtrapolatedTrackParticleContainer(pTrackParticleContainer);
127   
128 //Hopefully temporary 
129   if (pTrackParticleMSONly){
130     pCombinedMuon->set_muonSpectrometerTrackParticle(pTrackParticleContainer_MSonly,pTrackParticleMSONly);
131   }else{
132     pCombinedMuon->set_muonSpectrometerTrackParticle(pTrackParticleContainer,pTrackParticle);
133   }
134 
135   pCombinedMuon->set_bestMatch(false);
136   
137   //Calculate parametrized energy loss
138   double Eloss  = 3000.;
139   sc = p_OwnEDMHelper->BackTrackingEloss(pTrackParticle ,Eloss) ;
140   if ( sc.isFailure() ) Eloss = 3000. ;
141 
142   double paramEnergy = Eloss;
143   double paramEnergyErr = 0.20 * paramEnergy ;
144   Trk::EnergyLoss aEnergyLoss (paramEnergy, paramEnergyErr);
145 
146   if (p_IIsolationTool){
147    sc = p_IIsolationTool->dressing( pCombinedMuon, &aEnergyLoss  );
148    if ( sc.isFailure() ) msg(MSG::WARNING) << "fail to dress muon " << endreq;
149   }
150 
151   if ( pCombinedMuon ) {
152     StacoMuonQualityWordHelper aStacoMuonQualityWordHelper ;
153     MuonQualityWord aMuonQualityWord ;
154     aStacoMuonQualityWordHelper.Set_isTight(aMuonQualityWord) ;
155     pCombinedMuon->set_isMuonBits(aMuonQualityWord);
156   }
157 
158   return pCombinedMuon ;
159 
160 }
161 

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!