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 "Particle/TrackParticle.h"
010 #include "Particle/TrackParticleContainer.h"
011 #include "TrkParameters/MeasuredPerigee.h"
012 
013 /////////////////////////////////////////////////////////
014 #include "STACOTools/DoStacoObjectTool.h"
015 
016 //----------------------------------------------------------------//
017 #include "STACOEvent/StacoObject.h"
018 #include "STACOToolsInterfaces/IStacoCombineTool.h"
019 #include "STACOToolsInterfaces/IStacoEDMHelper.h"
020 
021 
022 DoStacoObjectTool::DoStacoObjectTool(const std::string& t, 
023                                             const std::string& n,
024                                             const IInterface*  p ):AthAlgTool(t,n,p),
025 p_OwnEDMHelper ( "StacoEDMHelper/ConfiguredStacoEDMHelper" ) 
026 {
027 
028   declareInterface<IDoStacoObjectTool>(this);
029 
030   declareProperty("StacoEDMHelper" , p_OwnEDMHelper ) ;
031 
032 }
033 
034 DoStacoObjectTool::~DoStacoObjectTool(){}
035 
036 // Initialize
037 StatusCode DoStacoObjectTool::initialize() {
038 
039   StatusCode sc = StatusCode::SUCCESS;
040 
041   msg(MSG::INFO) << "Initialisation started     " << endreq;
042 
043   sc = AthAlgTool::initialize(); 
044   if ( sc.isFailure() ) {
045     msg(MSG::FATAL) << " AthAlgTool::initialize() failed" << endreq;
046     return( StatusCode::FAILURE );
047   }
048 
049 
050 //Retrieve p_OwnEDMHelper
051   if ( p_OwnEDMHelper.retrieve().isFailure() ) {
052     msg(MSG::FATAL) << "Failed to retrieve tool " << p_OwnEDMHelper << endreq;
053     return StatusCode::FAILURE;
054   }
055   msg(MSG::INFO) << "Retrieved tool " << p_OwnEDMHelper << endreq;
056 
057 
058   msg(MSG::INFO) << "Initialisation ended     " << endreq;
059 
060   return StatusCode::SUCCESS;
061 
062 }
063 
064 StacoObject* DoStacoObjectTool::DoStacoObject(
065                                ToolHandle< IStacoCombineTool >& pIStacoCombineTool,
066                                const Rec::TrackParticleContainer* pTrackParticleContainerID  ,
067                                const Rec::TrackParticleContainer* pTrackParticleContainerMS ,
068                                const Rec::TrackParticleContainer* pTrackParticleContainerMSOnly ,
069                                const Rec::TrackParticle*   pTrackParticleID,
070                                const Rec::TrackParticle*   pTrackParticleMS,
071                                const Rec::TrackParticle*   pTrackParticleMSOnly,
072                                const Trk::MeasuredPerigee* pMeasuredPerigeeMS,
073                                const Trk::MeasuredPerigee* pMeasuredPerigeeID
074 ){
075   StatusCode sc = StatusCode::SUCCESS;
076 
077 //Get Eloss
078   double Eloss  = 3000.;
079 //   sc = p_OwnEDMHelper->BackTrackingEloss(
080 //                                            pTrackParticleMSOnly->originalTrack(),
081 //                                            pTrackParticleMS->originalTrack() ,
082 //                                            Eloss
083 //                                           ) ;
084   sc = p_OwnEDMHelper->BackTrackingEloss(
085                                            pTrackParticleMS->originalTrack() ,
086                                            Eloss
087                                           ) ;
088   if ( sc.isFailure() ){
089     std::cout<< " StacoBuilder::execute() Eloss PB " << std::setprecision(9)<< Eloss <<std::endl ;
090   }
091 
092   if (pTrackParticleID == 0){                                                        
093     // Get the Chi2 and the nodf of the Track
094     double chi2   = pTrackParticleMS->fitQuality()->chiSquared();
095     int NbreOfDoF = pTrackParticleMS->fitQuality()->numberDoF();
096 
097     // Get Muon Spectrometer Parameters
098     double  Param[5],CovMat[15];
099     pIStacoCombineTool->GetPar_TrackParticle(pMeasuredPerigeeMS, Param ,CovMat);
100 
101     StacoObject* pStacoObject = new StacoObject(
102                                                 Param[0],Param[1],Param[2],Param[3],Param[4],
103                                                 CovMat[0],CovMat[1],CovMat[2],CovMat[3],CovMat[4],
104                                                 CovMat[5],CovMat[6],CovMat[7],CovMat[8],CovMat[9],
105                                                 CovMat[10],CovMat[11],CovMat[12],CovMat[13],
106                                                 CovMat[14],chi2,NbreOfDoF,Eloss
107                                                );
108                                                
109     pStacoObject->setMuSpectro(pTrackParticleContainerMS, pTrackParticleMS);
110     pStacoObject->setMuSpectroMSOnly(pTrackParticleContainerMSOnly, pTrackParticleMSOnly);
111     pStacoObject->SetPerigeeSurface( *( pMeasuredPerigeeMS->associatedSurface()) );
112     
113     return pStacoObject;
114     
115   }else{
116   
117     double  Xi2   = 0. ;
118     double  Xi2Mu = 0. ;
119     double  Xi2ID = 0. ;     
120     double  ParCB[5],covCB[15];
121  
122     bool TheBool = pIStacoCombineTool->TheCombIdMu( 
123                                                    pMeasuredPerigeeID, pMeasuredPerigeeMS,
124                                                    Xi2, Xi2Mu, Xi2ID, ParCB, covCB
125                                                   );
126     if (!TheBool) msg(MSG::INFO) << " pIStacoCombineTool->TheCombIdMu is False !? "<< endreq;
127     
128      // Get the Chi2 and the nodf of the Track
129     double chi2MS   = pTrackParticleMS->fitQuality()->chiSquared();
130     double chi2ID   = pTrackParticleID->fitQuality()->chiSquared();
131 
132     double sumXi2    = Xi2*5 + chi2MS + chi2ID;
133     int NbreOfDoFcb  = 5 ; 
134     int sumNbreOfDoF = NbreOfDoFcb +
135                        pTrackParticleMS->fitQuality()->numberDoF() +
136                        pTrackParticleID->fitQuality()->numberDoF() ; 
137                                                   
138     StacoObject*  pStacoObject = new StacoObject(
139                                                  ParCB[0],ParCB[1],ParCB[2],ParCB[3],ParCB[4],
140                                                  covCB[0],covCB[1],covCB[2],covCB[3],covCB[4],
141                                                  covCB[5],covCB[6],covCB[7],covCB[8],covCB[9],
142                                                  covCB[10],covCB[11],covCB[12],covCB[13],
143                                                  covCB[14],sumXi2,sumNbreOfDoF,Eloss
144                                                 );
145                                                    
146     pStacoObject->setMuIdet(pTrackParticleContainerID, pTrackParticleID);
147     pStacoObject->setMuSpectro(pTrackParticleContainerMS, pTrackParticleMS);
148     pStacoObject->setMuSpectroMSOnly(pTrackParticleContainerMSOnly, pTrackParticleMSOnly);
149     pStacoObject->SetPerigeeSurface( *( pMeasuredPerigeeMS->associatedSurface()) );
150 
151     return pStacoObject;
152     
153   }
154 
155   return 0;
156 
157 }
158 
159 StatusCode DoStacoObjectTool::finalize(){return StatusCode::SUCCESS;}
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!