CMS 3D CMS Logo

cms::DiMuonSeedGeneratorHIC Class Reference

#include <RecoHIMuon/HiMuSeed/interface/DiMuonSeedGeneratorHIC.h>

List of all members.

Public Types

typedef std::vector
< DiMuonTrajectorySeed
SeedContainer
typedef SeedContainer::iterator SeedIterator

Public Member Functions

 DiMuonSeedGeneratorHIC (edm::InputTag, const MagneticField *, const GeometricSearchTracker *, const HICConst *, const std::string, int aMult)
virtual std::map< DetLayer *,
SeedContainer
produce (const edm::Event &e, const edm::EventSetup &c, FreeTrajectoryState &, TrajectoryStateOnSurface &, FreeTrajectoryState &, const TransientTrackingRecHitBuilder *RecHitBuilder, const MeasurementTracker *measurementTracker, std::vector< DetLayer * > *)
virtual ~DiMuonSeedGeneratorHIC ()

Private Member Functions

std::pair
< TrajectoryMeasurement, bool
barrelUpdateSeed (const FreeTrajectoryState &, const TrajectoryMeasurement &) const
std::pair
< TrajectoryMeasurement, bool
forwardUpdateSeed (const FreeTrajectoryState &, const TrajectoryMeasurement &) const

Private Attributes

TrackerLayerIdAccessor acc
std::vector< LayerWithHits * > allLayersWithHits
std::vector< BarrelDetLayer * > bl
std::string builderName
std::vector< ForwardDetLayer * > fneg
std::vector< ForwardDetLayer * > fpos
bool isFirstCall
const MagneticFieldmagfield
edm::InputTag rphirecHitsTag
std::vector< const DetLayer * > theDetLayer
FreeTrajectoryState theFtsMuon
FreeTrajectoryState theFtsTracker
const HICConsttheHICConst
const LayerMeasurementstheLayerMeasurements
int theLowMult
const MeasurementTrackertheMeasurementTracker
PropagatorthePropagator
const GeometricSearchTrackertheTracker
const
TransientTrackingRecHitBuilder
TTRHbuilder


Detailed Description

Definition at line 70 of file DiMuonSeedGeneratorHIC.h.


Member Typedef Documentation

typedef std::vector<DiMuonTrajectorySeed> cms::DiMuonSeedGeneratorHIC::SeedContainer

Definition at line 73 of file DiMuonSeedGeneratorHIC.h.

typedef SeedContainer::iterator cms::DiMuonSeedGeneratorHIC::SeedIterator

Definition at line 74 of file DiMuonSeedGeneratorHIC.h.


Constructor & Destructor Documentation

cms::DiMuonSeedGeneratorHIC::DiMuonSeedGeneratorHIC ( edm::InputTag  ,
const MagneticField ,
const GeometricSearchTracker ,
const HICConst ,
const std::string  ,
int  aMult 
)

virtual cms::DiMuonSeedGeneratorHIC::~DiMuonSeedGeneratorHIC (  )  [inline, virtual]

Definition at line 92 of file DiMuonSeedGeneratorHIC.h.

00092 {} 


Member Function Documentation

pair< TrajectoryMeasurement, bool > cms::DiMuonSeedGeneratorHIC::barrelUpdateSeed ( const FreeTrajectoryState FTSOLD,
const TrajectoryMeasurement tm 
) const [private]

Definition at line 151 of file DiMuonSeedGeneratorHIC.cc.

References GlobalTrajectoryParameters::charge(), funct::cos(), GenMuonPlsPt100GeV_cfg::cout, FreeTrajectoryState::curvilinearError(), TrajectoryMeasurement::forwardPredictedState(), TrajectoryStateOnSurface::freeTrajectoryState(), int, TrajectoryMeasurement::layer(), m, magfield, CurvilinearTrajectoryError::matrix(), max, min, GlobalTrajectoryParameters::momentum(), FreeTrajectoryState::parameters(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), phi, cms::HICConst::phiai, cms::HICConst::phias, cms::HICConst::phibi, cms::HICConst::phibs, cms::HICConst::phiro, pi, GlobalTrajectoryParameters::position(), cms::HICConst::ptbmax, cms::HICConst::ptboun, ptmin, TrajectoryMeasurement::recHit(), funct::sin(), funct::sqrt(), cms::HICConst::step, GeometricSearchDet::surface(), funct::tan(), cms::HICConst::tetro, theHICConst, theta, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV3DBase< T, PVType, FrameType >::z(), and cms::HICConst::zvert.

00155 {
00156 
00157   bool good=false;
00158 #ifdef DEBUG
00159   std::cout<<" DiMuonSeedGeneratorHIC::barrelUpdateSeed::BarrelSeed "<<std::endl;
00160 #endif
00161   const DetLayer* dl = tm.layer();
00162  // std::cout<<" BarrelSeed 0"<<std::endl;  
00163   const TransientTrackingRecHit::ConstRecHitPointer rh = tm.recHit(); 
00164  // std::cout<<" BarrelSeed 1"<<std::endl;
00165   if(!(rh->isValid())) 
00166   {
00167 #ifdef DEBUG
00168      std::cout<<" DiMuonSeedGeneratorHIC::barrelUpdateSeed::hit is not valid "<<std::endl;
00169 #endif
00170      return pair<TrajectoryMeasurement,bool>(tm,good);
00171   }
00172 #ifdef DEBUG
00173      std::cout<<" DiMuonSeedGeneratorHIC::barrelUpdateSeed::hit is  valid "<<std::endl;
00174 #endif
00175 //  std::cout<<" BarrelSeed 2"<<std::endl;
00176   FreeTrajectoryState FTS = *(tm.forwardPredictedState().freeTrajectoryState());
00177 
00178 //
00179 // Define local variables.
00180 //     
00181   int imin = 0;
00182   int imax = 0;
00183   int imin1 = 0;
00184   int imax1 = 0;
00185   double phi = FTSOLD.parameters().position().phi(); 
00186   double pt = FTS.parameters().momentum().perp();
00187   double aCharge = FTS.parameters().charge();
00188   AlgebraicSymMatrix55 e = FTS.curvilinearError().matrix();
00189 //  double dpt = 0.2*pt;
00190   double dpt = 0.35*pt;
00191   
00192 //  std::cout<<" BarrelSeed 3 "<<std::endl;  
00193 //
00194 // Calculate a bin for lower and upper boundary of PT interval available for track.  
00195 //  
00196   int imax0 = (int)((pt+dpt-theHICConst->ptboun)/theHICConst->step) + 1;
00197   int imin0 = (int)((pt-dpt-theHICConst->ptboun)/theHICConst->step) + 1;
00198   if( imin0 < 1 ) imin0 = 1;
00199 #ifdef DEBUG    
00200         std::cout<<" DiMuonSeedGeneratorHIC::barrelUpdateSeed::imin0,imax0 "<<imin0<<" "<<imax0<<" pt,dpt "<<pt<<" "<<dpt<<std::endl;
00201 #endif  
00202 
00203   double dens,df,ptmax,ptmin;
00204 
00205   GlobalPoint realhit = (*rh).globalPosition();
00206   df = fabs(realhit.phi() - phi);
00207 
00208   if(df > pi) df = twopi-df;
00209   if(df > 1.e-5) 
00210   {
00211       dens = 1./df;
00212    } //end if
00213      else
00214       {
00215           dens = 100000.;
00216       } // end else
00217   //   std::cout<<" Phi rh "<<realhit.phi()<<" phumu "<<phi<<" df "<<df<<" dens "<<dens<<std::endl;     
00218         //
00219         // Calculate new imin, imax, pt (works till 20GeV/c)
00220         // It is necessary to parametrized for different Pt value with some step (to be done)
00221         //
00222         
00223         ptmax = (dens-(double)(theHICConst->phias[26]))/(double)(theHICConst->phibs[26]) + theHICConst->ptbmax;
00224         ptmin = (dens-(double)(theHICConst->phiai[26]))/(double)(theHICConst->phibi[26]) + theHICConst->ptbmax;
00225 #ifdef DEBUG
00226      std::cout<<" Phias,phibs,phiai,phibi "<<theHICConst->phias[26]<<" "<<theHICConst->phibs[26]<<" "<<
00227      theHICConst->phiai[26]<<" "<<theHICConst->phibi[26]<<" "<<theHICConst->ptbmax<<std::endl;
00228      std::cout<<" ptmin= "<<ptmin<<" ptmax "<<ptmax<<std::endl;
00229      std::cout<<" ptboun "<<theHICConst->ptboun<<" "<<theHICConst->step<<std::endl;
00230 #endif 
00231         imax = (int)((ptmax-theHICConst->ptboun)/theHICConst->step)+1;
00232         imin = (int)((ptmin-theHICConst->ptboun)/theHICConst->step)+1;
00233         if(imin > imax) {
00234 #ifdef DEBUG    
00235                 std::cout<<" imin>imax "<<imin<<" "<<imax<<std::endl; 
00236 #endif          
00237            return pair<TrajectoryMeasurement,bool>(tm,good);}
00238         if(imax < 1) { 
00239 #ifdef DEBUG    
00240               std::cout<<"imax < 1 "<<imax<<std::endl; 
00241 #endif        
00242               return pair<TrajectoryMeasurement,bool>(tm,good);}
00243 
00244         imin1 = max(imin,imin0);
00245         imax1 = min(imax,imax0);
00246         if(imin1 > imax1) {
00247 #ifdef DEBUG    
00248          std::cout<<" imin,imax "<<imin<<" "<<imax<<std::endl; 
00249          std::cout<<" imin,imax "<<imin0<<" "<<imax0<<std::endl;
00250          std::cout<<" imin1>imax1 "<<imin1<<" "<<imax1<<std::endl;
00251 #endif  
00252          return pair<TrajectoryMeasurement,bool>(tm,good);
00253         }
00254 
00255 //
00256 // Define new trajectory. 
00257 //
00258         double ptnew = theHICConst->ptboun + theHICConst->step * (imax1 + imin1)/2. - theHICConst->step/2.;  // recalculated PT of track
00259         
00260         //
00261         // new theta angle of track
00262         //
00263         
00264         double dfmax = 1./((double)(theHICConst->phias[26])+(double)(theHICConst->phibs[26])*(ptnew-theHICConst->ptbmax));
00265         double dfmin = 1./((double)(theHICConst->phiai[26])+(double)(theHICConst->phibi[26])*(ptnew-theHICConst->ptbmax));
00266         double dfcalc = fabs(dfmax+dfmin)/2.;
00267         double phinew = phi+aCharge*dfcalc;
00268         
00269         //    
00270         // Recalculate phi, and Z.     
00271         //
00272         
00273         double rad = 100.*ptnew/(0.3*4.);
00274         double alf = 2.*asin(realhit.perp()/rad);
00275         double alfnew = phinew - aCharge*alf;
00276         
00277         //
00278         // Fill GlobalPoint,GlobalVector    
00279         //
00280         
00281         double delx = realhit.z()-theHICConst->zvert;
00282         double delr = sqrt( realhit.y()*realhit.y()+realhit.x()*realhit.x() );
00283         double theta = atan2(delr,delx);        
00284         
00285 //      std::cout<<" Point 3 "<<std::endl;
00286 //      
00287 // Each trajectory in tracker starts from real point    
00288 //      GlobalPoint xnew0( realhit.perp()*cos(phinew), realhit.perp()*sin(phinew), realhit.z() ); 
00289 
00290         GlobalPoint xnew0( realhit.x(), realhit.y(), realhit.z() ); 
00291 
00292         GlobalVector pnew0(ptnew*cos(alfnew),ptnew*sin(alfnew),ptnew/tan(theta));
00293 
00294         AlgebraicSymMatrix m(5,0);
00295         m(1,1) = 0.5*ptnew; m(2,2) = theHICConst->phiro[12];
00296         m(3,3) = theHICConst->tetro[12];
00297         m(4,4) = theHICConst->phiro[12]; 
00298         m(5,5) = theHICConst->tetro[12];
00299            
00300         TrajectoryStateOnSurface updatedTsosOnDet=TrajectoryStateOnSurface
00301           ( GlobalTrajectoryParameters( xnew0, pnew0, (int)aCharge, &(*magfield) ),
00302                                               CurvilinearTrajectoryError(m), dl->surface()  );
00303   
00304      float estimate = 1.;
00305      TrajectoryMeasurement newtm(tm.forwardPredictedState(), updatedTsosOnDet, rh, estimate, dl );
00306      good=true;
00307      pair<TrajectoryMeasurement,bool> newtmr(newtm,good);
00308     // std::cout<<" Barrel newtm estimate= "<<newtmr.first.estimate()<<" "<<newtmr.second<<std::endl; 
00309   return newtmr;
00310 } 

pair< TrajectoryMeasurement, bool > cms::DiMuonSeedGeneratorHIC::forwardUpdateSeed ( const FreeTrajectoryState FTSOLD,
const TrajectoryMeasurement tm 
) const [private]

Definition at line 312 of file DiMuonSeedGeneratorHIC.cc.

References cms::HICConst::atra, GlobalTrajectoryParameters::charge(), funct::cos(), GenMuonPlsPt100GeV_cfg::cout, FreeTrajectoryState::curvilinearError(), PV3DBase< T, PVType, FrameType >::eta(), TrajectoryMeasurement::forwardPredictedState(), cms::HICConst::forwparam, TrajectoryStateOnSurface::freeTrajectoryState(), TrajectoryMeasurement::layer(), m, magfield, CurvilinearTrajectoryError::matrix(), GlobalTrajectoryParameters::momentum(), FreeTrajectoryState::parameters(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), phi, cms::HICConst::phiro, pi, GlobalTrajectoryParameters::position(), ptmin, TrajectoryMeasurement::recHit(), funct::sin(), funct::sqrt(), GeometricSearchDet::surface(), funct::tan(), cms::HICConst::tetro, theHICConst, theta, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV3DBase< T, PVType, FrameType >::z(), and cms::HICConst::zvert.

00316 {
00317   bool good=false;
00318 #ifdef DEBUG
00319   std::cout<<" DiMuonSeedGeneratorHIC::forwardUpdateSeed::EndcapSeed::start "<<std::endl;
00320 #endif
00321   const DetLayer* dl = tm.layer();
00322 //  std::cout<<" EndcapSeed 0"<<std::endl;
00323   const TransientTrackingRecHit::ConstRecHitPointer rh = tm.recHit();
00324 //  std::cout<<" EndcapSeed 1"<<std::endl;   
00325   if(!(rh->isValid())) 
00326   {
00327 #ifdef DEBUG
00328   std::cout<<" DiMuonSeedGeneratorHIC::forwardUpdateSeed::EndcapSeed::EndcapSeed::hit is not valid "<<std::endl;
00329 #endif
00330 
00331      return pair<TrajectoryMeasurement,bool>(tm,good);
00332   }
00333 
00334 #ifdef DEBUG
00335   std::cout<<" DiMuonSeedGeneratorHIC::forwardUpdateSeed::EndcapSeed::EndcapSeed::valid "<<std::endl;
00336 #endif 
00337 
00338   FreeTrajectoryState FTS = *(tm.forwardPredictedState().freeTrajectoryState());
00339 
00340 //
00341 // Define local variables.
00342 //     
00343 
00344   double phi = FTSOLD.parameters().position().phi(); 
00345   double aCharge = FTS.parameters().charge();
00346   AlgebraicSymMatrix55 e = FTS.curvilinearError().matrix();
00347   double pt = FTS.parameters().momentum().perp();
00348   double pz = FTS.parameters().momentum().z();
00349   double dpt = 0.6*pt;
00350   
00351 //  std::cout<<" Point 0 "<<std::endl;
00352   
00353         GlobalPoint realhit = rh->globalPosition();
00354 
00355 //  std::cout<<" Point 1 "<<std::endl;
00356         
00357         double df = fabs(realhit.phi() - phi);
00358 
00359         if(df > pi) df = twopi-df;
00360 
00361 #ifdef DEBUG
00362         cout<<" DiMuonSeedGeneratorHIC::forwardUpdateSeed::phipred::phihit::df "<<phi<<" "<<realhit.phi()<<" "<<df<<endl;
00363 #endif
00364 
00365         //
00366         // calculate the new Pl
00367         //
00368 
00369         double delx = realhit.z() - theHICConst->zvert;
00370         double delr = sqrt(realhit.y()*realhit.y()+realhit.x()*realhit.x());
00371         double theta = atan2( delr, delx );
00372         double ptmin = 0.;
00373         double ptmax = 0.;
00374         double ptnew = 0.;
00375         double pznew = 0.;
00376         
00377 // old ok  double pznew = abs((aCharge*theHicConst->forwparam[1])/(df-theHicConst->forwparam[0]));
00378 
00379         if( fabs(FTSOLD.parameters().momentum().eta()) > 1.9 )
00380         {
00381 #ifdef DEBUG    
00382            cout<<" First parametrization "<<df<<endl;
00383 #endif     
00384            pznew = fabs(( df - 0.0191878 )/(-0.0015952))/3.;
00385            
00386            if( df > 0.1 ) pznew = 5.;
00387            if( fabs(pznew)<3.) pznew = 3.;
00388            
00389            if( FTSOLD.parameters().position().z() < 0. ) pznew = (-1)*pznew;
00390            ptnew = pznew * tan( theta );
00391         }
00392         if( fabs(FTSOLD.parameters().momentum().eta()) > 1.7 && fabs(FTSOLD.parameters().momentum().eta()) < 1.9 )
00393         {
00394 #ifdef DEBUG    
00395            cout<<" Second parametrization "<<df<<endl;
00396 #endif  
00397            pznew = fabs(( df - 0.38 )/(-0.009))/3.;
00398            if( fabs(pznew)<2.) pznew = 2.;
00399            
00400            if( FTSOLD.parameters().position().z() < 0. ) pznew = (-1)*pznew;
00401            ptnew = pznew * tan( theta );
00402         }
00403         if( fabs(FTSOLD.parameters().momentum().eta()) > 1.6 && fabs(FTSOLD.parameters().momentum().eta()) < 1.7 )
00404         {
00405 #ifdef DEBUG    
00406            cout<<" Third parametrization "<<df<<endl;
00407 #endif  
00408            pznew = fabs(( df - 0.9 )/(-0.02))/3.;
00409            if( fabs(pznew)<1.) pznew = 1.;
00410            if( FTSOLD.parameters().position().z() < 0. ) pznew = (-1)*pznew;
00411            ptnew = pznew * tan( theta );
00412         }
00413         if( fabs(FTSOLD.parameters().momentum().eta()) > 0.7 && fabs(FTSOLD.parameters().momentum().eta()) < 1.6 )
00414         {
00415 #ifdef DEBUG
00416            cout<<" Forth parametrization "<<df<<endl;
00417 #endif  
00418            double dfinv = 0.;
00419            if( df < 0.0000001 ) {
00420                 dfinv = 1000000.; 
00421            }
00422              else
00423              {
00424                 dfinv = 1/df;
00425              }  
00426            ptmin = (dfinv - 4.)/0.7 + 3.;
00427            if( ptmin < 2. ) ptmin = 2.;
00428            ptmax = (dfinv - 0.5)/0.3 + 3.;
00429            ptnew = ( ptmin + ptmax )/2.;
00430            pznew = ptnew/tan( theta );
00431         
00432 // std::cout<<" Point 6 "<<std::endl;
00433 #ifdef DEBUG    
00434         std::cout<<" Paramters of algorithm "<<df<<" "<<theHICConst->forwparam[1]<<" "<<theHICConst->forwparam[0]<<std::endl;
00435         std::cout<<" dfinv  "<<dfinv<<" ptmax "<<ptmax<<" ptmin "<<ptmin<<std::endl;
00436         std::cout<<" check "<<pt<<" "<<ptnew<<" "<<dpt<<" pz "<<pznew<<" "<<pz<<std::endl;
00437 #endif
00438         }
00439         //
00440         // Check if it is valid
00441         //      
00442         if( (pt - ptnew)/pt < -2 || (pt - ptnew)/pt > 1 )
00443         {
00444 #ifdef DEBUG
00445             cout<<" Return fake 0 pt::ptnew "<<pt<<" "<<ptnew<<endl;
00446 #endif
00447            return pair<TrajectoryMeasurement,bool>(tm,good); // bad rhit
00448         }
00449     //        cout<<" Start recalculation 0 "<<endl;
00450         //
00451         // Recalculate phi, and Z.     
00452         //
00453         double alf = theHICConst->atra * ( realhit.z() - theHICConst->zvert )/fabs(pznew);
00454         double alfnew = realhit.phi() + aCharge*alf;
00455         GlobalPoint xnew0(realhit.x(), realhit.y(), realhit.z()); 
00456         GlobalVector pnew0( ptnew*cos(alfnew), ptnew*sin(alfnew), pznew );
00457 #ifdef DEBUG    
00458         cout<<" Start recalculation 1 FTSOLD eta, r hit, pt "<<FTSOLD.parameters().momentum().eta()<<" "<<realhit.perp()<<
00459                                                                    " "<<FTSOLD.parameters().momentum().perp()<<endl;    
00460 #endif  
00461         if( fabs(FTSOLD.parameters().momentum().eta()) < 1.7 && fabs(FTSOLD.parameters().momentum().eta()) > 0.8 )
00462         {
00463             if( realhit.perp() < 80. ) {
00464 //          if( realhit.perp() < 72. ) {
00465 #ifdef DEBUG
00466               cout<<" Return fake 1 "<<realhit.perp()<<endl;
00467 #endif        
00468               return pair<TrajectoryMeasurement,bool>(tm,good);
00469             }  
00470         }
00471 // std::cout<<" Point 9 "<<std::endl;
00472 
00473         if( FTSOLD.parameters().momentum().perp() > 2.0){
00474           if( fabs(FTSOLD.parameters().momentum().eta()) < 2.0 && fabs(FTSOLD.parameters().momentum().eta()) >= 1.7 )
00475           {
00476             if( realhit.perp() > 100. || realhit.perp() < 60. ) {
00477 #ifdef DEBUG        
00478               cout<<" Return fake 2 "<<endl;
00479 #endif        
00480               return pair<TrajectoryMeasurement,bool>(tm,good);
00481           }  
00482           }
00483           if( fabs(FTSOLD.parameters().momentum().eta()) < 2.4 && fabs(FTSOLD.parameters().momentum().eta()) >= 2.0 )
00484           {
00485             if( realhit.perp() > 75. || realhit.perp() < 40. ) {
00486 //          if( realhit.perp() > 82. || realhit.perp() < 40. ) {
00487 #ifdef DEBUG        
00488               cout<<" Return fake 3 "<<endl;
00489 #endif        
00490               return pair<TrajectoryMeasurement,bool>(tm,good);
00491             }  
00492           }
00493           
00494         }  
00495         else  // pt<2
00496         {
00497           if( fabs(FTSOLD.parameters().momentum().eta()) < 2.0 && fabs(FTSOLD.parameters().momentum().eta()) >= 1.7 )
00498           {       
00499             if( realhit.perp() > 84. || realhit.perp() < 40. ) {
00500 #ifdef DEBUG        
00501               cout<<" Return fake 4 "<<endl;
00502 #endif        
00503               return pair<TrajectoryMeasurement,bool>(tm,good);
00504             }  
00505           }
00506           if( fabs(FTSOLD.parameters().momentum().eta()) < 2.4 && fabs(FTSOLD.parameters().momentum().eta()) >= 2.0 )
00507           {
00508             if( realhit.perp() > 84. || realhit.perp() < 40. ) {
00509 #ifdef DEBUG        
00510               cout<<" Return fake 5 "<<endl;
00511 #endif        
00512               return pair<TrajectoryMeasurement,bool>(tm,good);
00513             }  
00514           }
00515        } // pt ><2
00516 #ifdef DEBUG
00517           cout<<" Create new TM "<<endl;
00518 #endif  
00519         AlgebraicSymMatrix m(5,0);        
00520         m(1,1) = fabs(0.5*pznew); m(2,2) = theHICConst->phiro[13]; 
00521         m(3,3) = theHICConst->tetro[13];
00522         m(4,4) = theHICConst->phiro[13]; 
00523         m(5,5) = theHICConst->tetro[13];
00524         
00525         TrajectoryStateOnSurface updatedTsosOnDet=TrajectoryStateOnSurface
00526           (GlobalTrajectoryParameters( xnew0, pnew0, (int)aCharge, &(*magfield) ),
00527                                              CurvilinearTrajectoryError(m), dl->surface() );
00528 
00529        float estimate=1.;
00530      TrajectoryMeasurement newtm(tm.forwardPredictedState(), updatedTsosOnDet, rh,estimate, dl);
00531      good=true;
00532       pair<TrajectoryMeasurement,bool> newtmr(newtm,good);
00533 #ifdef DEBUG      
00534      std::cout<<" Endcap newtm estimate= "<<newtmr.first.estimate()<<" "<<newtmr.second<<" pt "<<pnew0.perp()<<" pz "<<pnew0.z()<<std::endl;
00535 #endif
00536   return newtmr;
00537 }

virtual std::map<DetLayer*,SeedContainer> cms::DiMuonSeedGeneratorHIC::produce ( const edm::Event e,
const edm::EventSetup c,
FreeTrajectoryState ,
TrajectoryStateOnSurface ,
FreeTrajectoryState ,
const TransientTrackingRecHitBuilder RecHitBuilder,
const MeasurementTracker measurementTracker,
std::vector< DetLayer * > *   
) [virtual]

Referenced by cms::HITrackVertexMaker::produceTracks().


Member Data Documentation

TrackerLayerIdAccessor cms::DiMuonSeedGeneratorHIC::acc [private]

Definition at line 111 of file DiMuonSeedGeneratorHIC.h.

std::vector<LayerWithHits*> cms::DiMuonSeedGeneratorHIC::allLayersWithHits [private]

Definition at line 109 of file DiMuonSeedGeneratorHIC.h.

std::vector<BarrelDetLayer*> cms::DiMuonSeedGeneratorHIC::bl [private]

Definition at line 104 of file DiMuonSeedGeneratorHIC.h.

std::string cms::DiMuonSeedGeneratorHIC::builderName [private]

Definition at line 101 of file DiMuonSeedGeneratorHIC.h.

std::vector<ForwardDetLayer*> cms::DiMuonSeedGeneratorHIC::fneg [private]

Definition at line 106 of file DiMuonSeedGeneratorHIC.h.

std::vector<ForwardDetLayer*> cms::DiMuonSeedGeneratorHIC::fpos [private]

Definition at line 105 of file DiMuonSeedGeneratorHIC.h.

bool cms::DiMuonSeedGeneratorHIC::isFirstCall [private]

Definition at line 110 of file DiMuonSeedGeneratorHIC.h.

const MagneticField* cms::DiMuonSeedGeneratorHIC::magfield [private]

Definition at line 124 of file DiMuonSeedGeneratorHIC.h.

Referenced by barrelUpdateSeed(), and forwardUpdateSeed().

edm::InputTag cms::DiMuonSeedGeneratorHIC::rphirecHitsTag [private]

Definition at line 122 of file DiMuonSeedGeneratorHIC.h.

std::vector<const DetLayer*> cms::DiMuonSeedGeneratorHIC::theDetLayer [private]

Definition at line 107 of file DiMuonSeedGeneratorHIC.h.

FreeTrajectoryState cms::DiMuonSeedGeneratorHIC::theFtsMuon [private]

Definition at line 98 of file DiMuonSeedGeneratorHIC.h.

FreeTrajectoryState cms::DiMuonSeedGeneratorHIC::theFtsTracker [private]

Definition at line 97 of file DiMuonSeedGeneratorHIC.h.

const HICConst* cms::DiMuonSeedGeneratorHIC::theHICConst [private]

Definition at line 99 of file DiMuonSeedGeneratorHIC.h.

Referenced by barrelUpdateSeed(), and forwardUpdateSeed().

const LayerMeasurements* cms::DiMuonSeedGeneratorHIC::theLayerMeasurements [private]

Definition at line 127 of file DiMuonSeedGeneratorHIC.h.

int cms::DiMuonSeedGeneratorHIC::theLowMult [private]

Definition at line 102 of file DiMuonSeedGeneratorHIC.h.

const MeasurementTracker* cms::DiMuonSeedGeneratorHIC::theMeasurementTracker [private]

Definition at line 126 of file DiMuonSeedGeneratorHIC.h.

Propagator* cms::DiMuonSeedGeneratorHIC::thePropagator [private]

Definition at line 100 of file DiMuonSeedGeneratorHIC.h.

const GeometricSearchTracker* cms::DiMuonSeedGeneratorHIC::theTracker [private]

Definition at line 125 of file DiMuonSeedGeneratorHIC.h.

const TransientTrackingRecHitBuilder* cms::DiMuonSeedGeneratorHIC::TTRHbuilder [private]

Definition at line 123 of file DiMuonSeedGeneratorHIC.h.


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:36:31 2009 for CMSSW by  doxygen 1.5.4