CMS 3D CMS Logo

TestHits Class Reference

Description: <one line="" class="" summary>="">. More...

#include <RecoTracker/DebugTools/src/TestHits.cc>

Inheritance diagram for TestHits:

edm::EDAnalyzer

List of all members.

Public Member Functions

 TestHits (const edm::ParameterSet &)
 ~TestHits ()

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob (const edm::EventSetup &)
virtual void endJob ()
std::pair< LocalPoint,
LocalVector
projectHit (const PSimHit &, const StripGeomDetUnit *, const BoundPlane &)

Private Attributes

std::string builderName
const edm::ParameterSet conf_
TFile * file
edm::ESHandle< TrajectoryFitterfit
std::string fname
std::map< std::string, TH1F * > hChi2Increment
TH2F * hClsize_vs_Chi2
TrackerHitAssociatorhitAssociator
TH2F * hProcess_vs_Chi2
std::map< std::string, TH1F * > hPullGM_X_ts
std::map< std::string, TH1F * > hPullGM_X_ts_mono
std::map< std::string, TH1F * > hPullGM_X_ts_stereo
std::map< std::string, TH1F * > hPullGM_Y_ts
std::map< std::string, TH1F * > hPullGM_Y_ts_mono
std::map< std::string, TH1F * > hPullGM_Y_ts_stereo
std::map< std::string, TH1F * > hPullGM_Z_ts
std::map< std::string, TH1F * > hPullGM_Z_ts_mono
std::map< std::string, TH1F * > hPullGM_Z_ts_stereo
std::map< std::string, TH1F * > hPullGP_X_rs
std::map< std::string, TH1F * > hPullGP_X_rs_mono
std::map< std::string, TH1F * > hPullGP_X_rs_stereo
std::map< std::string, TH1F * > hPullGP_X_tr
std::map< std::string, TH1F * > hPullGP_X_tr_mono
std::map< std::string, TH1F * > hPullGP_X_tr_stereo
std::map< std::string, TH1F * > hPullGP_X_ts
std::map< std::string, TH1F * > hPullGP_X_ts_mono
std::map< std::string, TH1F * > hPullGP_X_ts_stereo
std::map< std::string, TH1F * > hPullGP_Y_rs
std::map< std::string, TH1F * > hPullGP_Y_rs_mono
std::map< std::string, TH1F * > hPullGP_Y_rs_stereo
std::map< std::string, TH1F * > hPullGP_Y_tr
std::map< std::string, TH1F * > hPullGP_Y_tr_mono
std::map< std::string, TH1F * > hPullGP_Y_tr_stereo
std::map< std::string, TH1F * > hPullGP_Y_ts
std::map< std::string, TH1F * > hPullGP_Y_ts_mono
std::map< std::string, TH1F * > hPullGP_Y_ts_stereo
std::map< std::string, TH1F * > hPullGP_Z_rs
std::map< std::string, TH1F * > hPullGP_Z_rs_mono
std::map< std::string, TH1F * > hPullGP_Z_rs_stereo
std::map< std::string, TH1F * > hPullGP_Z_tr
std::map< std::string, TH1F * > hPullGP_Z_tr_mono
std::map< std::string, TH1F * > hPullGP_Z_tr_stereo
std::map< std::string, TH1F * > hPullGP_Z_ts
std::map< std::string, TH1F * > hPullGP_Z_ts_mono
std::map< std::string, TH1F * > hPullGP_Z_ts_stereo
TH1F * hTotChi2Increment
double maxeta
double mineta
std::string propagatorName
std::string srcName
edm::ESHandle
< TransientTrackingRecHitBuilder
theBuilder
edm::ESHandle< TrackerGeometrytheG
edm::ESHandle< MagneticFieldtheMF
edm::ESHandle< PropagatorthePropagator
edm::Handle
< TrackCandidateCollection
theTCCollection
std::stringstream title


Detailed Description

Description: <one line="" class="" summary>="">.

Implementation: <Notes on="" implementation>="">

Definition at line 50 of file TestHits.h.


Constructor & Destructor Documentation

TestHits::TestHits ( const edm::ParameterSet iConfig  )  [explicit]

Definition at line 27 of file TestHits.cc.

References builderName, conf_, lat::endl(), fname, edm::ParameterSet::getParameter(), LogTrace, maxeta, mineta, propagatorName, and srcName.

00027                                                 :
00028   conf_(iConfig){
00029   LogTrace("TestHits") << conf_<< std::endl;
00030   propagatorName = conf_.getParameter<std::string>("Propagator");   
00031   builderName = conf_.getParameter<std::string>("TTRHBuilder");   
00032   srcName = conf_.getParameter<std::string>("src");   
00033   fname = conf_.getParameter<std::string>("Fitter");
00034   mineta = conf_.getParameter<double>("mineta");
00035   maxeta = conf_.getParameter<double>("maxeta");
00036 }

TestHits::~TestHits (  ) 

Definition at line 38 of file TestHits.cc.

00038 {}


Member Function Documentation

void TestHits::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDAnalyzer.

Definition at line 191 of file TestHits.cc.

References TrackerHitAssociator::associateHit(), TrajectoryStateOnSurface::cartesianError(), GlobalErrorBase< T, ErrorWeightType >::cxx(), GlobalErrorBase< T, ErrorWeightType >::cyy(), GlobalErrorBase< T, ErrorWeightType >::czz(), PTrajectoryStateOnDet::detId(), detId, dist(), lat::endl(), fit, edm::Event::getByLabel(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), hChi2Increment, hClsize_vs_Chi2, hitAssociator, hProcess_vs_Chi2, hPullGM_X_ts, hPullGM_X_ts_mono, hPullGM_X_ts_stereo, hPullGM_Y_ts, hPullGM_Y_ts_mono, hPullGM_Y_ts_stereo, hPullGM_Z_ts, hPullGM_Z_ts_mono, hPullGM_Z_ts_stereo, hPullGP_X_rs, hPullGP_X_rs_mono, hPullGP_X_rs_stereo, hPullGP_X_tr, hPullGP_X_tr_mono, hPullGP_X_tr_stereo, hPullGP_X_ts, hPullGP_X_ts_mono, hPullGP_X_ts_stereo, hPullGP_Y_rs, hPullGP_Y_rs_mono, hPullGP_Y_rs_stereo, hPullGP_Y_tr, hPullGP_Y_tr_mono, hPullGP_Y_tr_stereo, hPullGP_Y_ts, hPullGP_Y_ts_mono, hPullGP_Y_ts_stereo, hPullGP_Z_rs, hPullGP_Z_rs_mono, hPullGP_Z_rs_stereo, hPullGP_Z_tr, hPullGP_Z_tr_mono, hPullGP_Z_tr_stereo, hPullGP_Z_ts, hPullGP_Z_ts_mono, hPullGP_Z_ts_stereo, hTotChi2Increment, i, TrajectoryStateOnSurface::isValid(), PSimHit::localPosition(), LogTrace, m, muonGeometry::mag(), CartesianTrajectoryError::matrix(), maxeta, mineta, PSimHit::momentumAtEntry(), CartesianTrajectoryError::position(), GloballyPositioned< T >::position(), PSimHit::processType(), edm::ESHandle< T >::product(), projectHit(), TrackCandidate::recHits(), HLT_VtxMuL3::result, TrackCandidate::seed(), funct::sqrt(), srcName, state, theBuilder, theG, theMF, thePropagator, theTCCollection, title, Surface::toGlobal(), TrackerHitAssociator::TrackerHitAssociator(), TrackCandidate::trajectoryStateOnDet(), TrajectoryStateTransform::transientState(), muonGeometry::wheel, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

00192 {
00193   LogTrace("TestHits") << "\nnew event";
00194 
00195   iEvent.getByLabel(srcName,theTCCollection ); 
00196   hitAssociator = new TrackerHitAssociator::TrackerHitAssociator(iEvent);
00197 
00198   TrajectoryStateCombiner combiner;
00199 
00200   for (TrackCandidateCollection::const_iterator i=theTCCollection->begin(); i!=theTCCollection->end();i++){
00201 
00202     LogTrace("TestHits") << "\n*****************new candidate*****************" << std::endl;
00203       
00204     const TrackCandidate * theTC = &(*i);
00205     PTrajectoryStateOnDet state = theTC->trajectoryStateOnDet();
00206     const TrackCandidate::range& recHitVec=theTC->recHits();
00207 
00208     //convert PTrajectoryStateOnDet to TrajectoryStateOnSurface
00209     TrajectoryStateTransform transformer;
00210     
00211     DetId  detId(state.detId());
00212     TrajectoryStateOnSurface theTSOS=
00213       transformer.transientState(state, &(theG->idToDet(detId)->surface()),theMF.product());
00214 
00215     if (theTSOS.globalMomentum().eta()>maxeta || theTSOS.globalMomentum().eta()<mineta) continue;
00216     
00217     //convert the TrackingRecHit vector to a TransientTrackingRecHit vector
00218     TransientTrackingRecHit::RecHitContainer hits;
00219     
00220     for (edm::OwnVector<TrackingRecHit>::const_iterator i=recHitVec.first;
00221          i!=recHitVec.second; i++){
00222       hits.push_back(theBuilder->build(&(*i) ));
00223     }
00224 
00225     //call the fitter
00226     vector<Trajectory> result = fit->fit(theTC->seed(), hits, theTSOS);
00227     if (result.size()==0) continue;
00228     std::vector<TrajectoryMeasurement> vtm = result[0].measurements();
00229     double tchi2 = 0;
00230 
00231     TSOS lastState = theTSOS;
00232     for (std::vector<TrajectoryMeasurement>::iterator tm=vtm.begin(); tm!=vtm.end();tm++){
00233 
00234       TransientTrackingRecHit::ConstRecHitPointer rhit = tm->recHit();
00235       if ((rhit)->isValid()==0&&rhit->det()!=0) continue;
00236       LogTrace("TestHits") << "*****************new hit*****************" ;
00237 
00238       int subdetId = rhit->det()->geographicalId().subdetId();
00239       int layerId  = 0;
00240       DetId id = rhit->det()->geographicalId();
00241       if (id.subdetId()==3) layerId = ((TIBDetId)(id)).layer();
00242       if (id.subdetId()==5) layerId = ((TOBDetId)(id)).layer();
00243       if (id.subdetId()==1) layerId = ((PXBDetId)(id)).layer();
00244       if (id.subdetId()==4) layerId = ((TIDDetId)(id)).wheel();
00245       if (id.subdetId()==6) layerId = ((TECDetId)(id)).wheel();
00246       if (id.subdetId()==2) layerId = ((PXFDetId)(id)).disk();
00247       LogTrace("TestHits") << "subdetId=" << subdetId << " layerId=" << layerId ;
00248 
00249       double delta = 99999;
00250       LocalPoint rhitLPv = rhit->localPosition();
00251 
00252       vector<PSimHit> assSimHits = hitAssociator->associateHit(*(rhit->hit()));
00253       if (assSimHits.size()==0) continue;
00254       PSimHit shit;
00255       for(vector<PSimHit>::const_iterator m=assSimHits.begin(); m<assSimHits.end(); m++){
00256         if ((m->localPosition()-rhitLPv).mag()<delta) {
00257           shit=*m;
00258           delta = (m->localPosition()-rhitLPv).mag();
00259         }
00260       }
00261 
00262       TSOS currentState = tm->forwardPredictedState();
00263       if (tm->backwardPredictedState().isValid()) 
00264         currentState = combiner(tm->backwardPredictedState(), tm->forwardPredictedState());
00265       TSOS updatedState = tm->updatedState();
00266       tchi2+=tm->estimate();
00267 
00268       //plot chi2 increment
00269       double chi2increment = tm->estimate();
00270       LogTrace("TestHits") << "tm->estimate()=" << tm->estimate();
00271       title.str("");
00272       title << "Chi2Increment_" << subdetId << "-" << layerId;
00273       hChi2Increment[title.str()]->Fill( chi2increment );
00274       hTotChi2Increment->Fill( chi2increment );
00275       hProcess_vs_Chi2->Fill( chi2increment, shit.processType() );
00276       if (dynamic_cast<const SiPixelRecHit*>(rhit->hit()))      
00277         hClsize_vs_Chi2->Fill( chi2increment, ((const SiPixelRecHit*)(rhit->hit()))->cluster()->size() );
00278       if (dynamic_cast<const SiStripRecHit2D*>(rhit->hit()))    
00279         hClsize_vs_Chi2->Fill( chi2increment, ((const SiStripRecHit2D*)(rhit->hit()))->cluster()->amplitudes().size() );
00280      
00281       //test hits
00282       const Surface * surf = &( (rhit)->det()->surface() );
00283       LocalVector shitLMom;
00284       LocalPoint shitLPos;
00285       if (dynamic_cast<const SiStripMatchedRecHit2D*>((rhit)->hit())) {
00286         double rechitmatchedx = rhit->localPosition().x();
00287         double rechitmatchedy = rhit->localPosition().y();
00288         double mindist = 999999;
00289         double distx, disty;
00290         std::pair<LocalPoint,LocalVector> closestPair;
00291         const StripGeomDetUnit* stripDet =(StripGeomDetUnit*) ((const GluedGeomDet *)(rhit)->det())->stereoDet();
00292         const BoundPlane& plane = (rhit)->det()->surface();
00293         for(vector<PSimHit>::const_iterator m=assSimHits.begin(); m<assSimHits.end(); m++) {
00294           //project simhit;
00295           std::pair<LocalPoint,LocalVector> hitPair = projectHit((*m),stripDet,plane);
00296           distx = fabs(rechitmatchedx - hitPair.first.x());
00297           disty = fabs(rechitmatchedy - hitPair.first.y());
00298           double dist = distx*distx+disty*disty;
00299           if(sqrt(dist)<mindist){
00300             mindist = dist;
00301             closestPair = hitPair;
00302           }
00303         }
00304         shitLPos = closestPair.first;
00305         shitLMom = closestPair.second;
00306       } else {
00307         shitLPos = shit.localPosition();        
00308         shitLMom = shit.momentumAtEntry();
00309       }
00310       GlobalVector shitGMom = surf->toGlobal(shitLMom);
00311       GlobalPoint shitGPos = surf->toGlobal(shitLPos);
00312 
00313       GlobalVector tsosGMom = currentState.globalMomentum();
00314       GlobalError  tsosGMEr(currentState.cartesianError().matrix().Sub<AlgebraicSymMatrix33>(3,3));
00315       GlobalPoint  tsosGPos = currentState.globalPosition();
00316       GlobalError  tsosGPEr = currentState.cartesianError().position();
00317 
00318       GlobalPoint rhitGPos = (rhit)->globalPosition();
00319       GlobalError rhitGPEr = (rhit)->globalPositionError();
00320 
00321       double pullGPX_rs = (rhitGPos.x()-shitGPos.x())/sqrt(rhitGPEr.cxx());
00322       double pullGPY_rs = (rhitGPos.y()-shitGPos.y())/sqrt(rhitGPEr.cyy());
00323       double pullGPZ_rs = (rhitGPos.z()-shitGPos.z())/sqrt(rhitGPEr.czz());
00324       //double pullGPX_rs = (rhitGPos.x()-shitGPos.x());
00325       //double pullGPY_rs = (rhitGPos.y()-shitGPos.y());
00326       //double pullGPZ_rs = (rhitGPos.z()-shitGPos.z());
00327       
00328       LogTrace("TestHits") << "rs" << std::endl;
00329       LogVerbatim("TestHits") << "assSimHits.size()=" << assSimHits.size() ;
00330       LogVerbatim("TestHits") << "tsos globalPos   =" << tsosGPos ;
00331       LogVerbatim("TestHits") << "sim hit globalPos=" << shitGPos ;
00332       LogVerbatim("TestHits") << "rec hit globalPos=" << rhitGPos ;
00333       LogVerbatim("TestHits") << "geographicalId   =" << rhit->det()->geographicalId().rawId() ;
00334       LogVerbatim("TestHits") << "surface position =" << surf->position() ;
00335 
00336       title.str("");
00337       title << "PullGP_X_" << subdetId << "-" << layerId << "_rs";
00338       hPullGP_X_rs[title.str()]->Fill( pullGPX_rs );
00339       title.str("");
00340       title << "PullGP_Y_" << subdetId << "-" << layerId << "_rs";
00341       hPullGP_Y_rs[title.str()]->Fill( pullGPY_rs );
00342       title.str("");
00343       title << "PullGP_Z_" << subdetId << "-" << layerId << "_rs";
00344       hPullGP_Z_rs[title.str()]->Fill( pullGPZ_rs );
00345 
00346       double pullGPX_tr = (tsosGPos.x()-rhitGPos.x())/sqrt(tsosGPEr.cxx()+rhitGPEr.cxx());
00347       double pullGPY_tr = (tsosGPos.y()-rhitGPos.y())/sqrt(tsosGPEr.cyy()+rhitGPEr.cyy());
00348       double pullGPZ_tr = (tsosGPos.z()-rhitGPos.z())/sqrt(tsosGPEr.czz()+rhitGPEr.czz());
00349       //double pullGPX_tr = (tsosGPos.x()-rhitGPos.x());
00350       //double pullGPY_tr = (tsosGPos.y()-rhitGPos.y());
00351       //double pullGPZ_tr = (tsosGPos.z()-rhitGPos.z());
00352 
00353       LogTrace("TestHits") << "tr" << std::endl;
00354 
00355       title.str("");
00356       title << "PullGP_X_" << subdetId << "-" << layerId << "_tr";
00357       hPullGP_X_tr[title.str()]->Fill( pullGPX_tr );
00358       title.str("");
00359       title << "PullGP_Y_" << subdetId << "-" << layerId << "_tr";
00360       hPullGP_Y_tr[title.str()]->Fill( pullGPY_tr );
00361       title.str("");
00362       title << "PullGP_Z_" << subdetId << "-" << layerId << "_tr";
00363       hPullGP_Z_tr[title.str()]->Fill( pullGPZ_tr );
00364 
00365       double pullGPX_ts = (tsosGPos.x()-shitGPos.x())/sqrt(tsosGPEr.cxx());
00366       double pullGPY_ts = (tsosGPos.y()-shitGPos.y())/sqrt(tsosGPEr.cyy());
00367       double pullGPZ_ts = (tsosGPos.z()-shitGPos.z())/sqrt(tsosGPEr.czz());
00368       //double pullGPX_ts = (tsosGPos.x()-shitGPos.x());
00369       //double pullGPY_ts = (tsosGPos.y()-shitGPos.y());
00370       //double pullGPZ_ts = (tsosGPos.z()-shitGPos.z());
00371 
00372       LogTrace("TestHits") << "ts1" << std::endl;
00373 
00374       title.str("");
00375       title << "PullGP_X_" << subdetId << "-" << layerId << "_ts";
00376       hPullGP_X_ts[title.str()]->Fill( pullGPX_ts );
00377       title.str("");
00378       title << "PullGP_Y_" << subdetId << "-" << layerId << "_ts";
00379       hPullGP_Y_ts[title.str()]->Fill( pullGPY_ts );
00380       title.str("");
00381       title << "PullGP_Z_" << subdetId << "-" << layerId << "_ts";
00382       hPullGP_Z_ts[title.str()]->Fill( pullGPZ_ts );
00383 
00384       double pullGMX_ts = (tsosGMom.x()-shitGMom.x())/sqrt(tsosGMEr.cxx());
00385       double pullGMY_ts = (tsosGMom.y()-shitGMom.y())/sqrt(tsosGMEr.cyy());
00386       double pullGMZ_ts = (tsosGMom.z()-shitGMom.z())/sqrt(tsosGMEr.czz());
00387       //double pullGMX_ts = (tsosGMom.x()-shitGMom.x());
00388       //double pullGMY_ts = (tsosGMom.y()-shitGMom.y());
00389       //double pullGMZ_ts = (tsosGMom.z()-shitGMom.z());
00390 
00391       LogTrace("TestHits") << "ts2" << std::endl;
00392 
00393       title.str("");
00394       title << "PullGM_X_" << subdetId << "-" << layerId << "_ts";
00395       hPullGM_X_ts[title.str()]->Fill( pullGMX_ts );
00396       title.str("");
00397       title << "PullGM_Y_" << subdetId << "-" << layerId << "_ts";
00398       hPullGM_Y_ts[title.str()]->Fill( pullGMY_ts );
00399       title.str("");
00400       title << "PullGM_Z_" << subdetId << "-" << layerId << "_ts";
00401       hPullGM_Z_ts[title.str()]->Fill( pullGMZ_ts );
00402 
00403       if (dynamic_cast<const SiStripMatchedRecHit2D*>((rhit)->hit())) {
00404         //mono
00405         LogTrace("TestHits") << "MONO HIT" << endl;
00406         CTTRHp tMonoHit = 
00407           theBuilder->build(dynamic_cast<const SiStripMatchedRecHit2D*>((rhit)->hit())->monoHit());
00408         if (tMonoHit==0) continue;
00409         vector<PSimHit> assMonoSimHits = hitAssociator->associateHit(*tMonoHit->hit());
00410         if (assMonoSimHits.size()==0) continue;
00411         const PSimHit sMonoHit = *(assSimHits.begin());
00412         const Surface * monoSurf = &( tMonoHit->det()->surface() );
00413         if (monoSurf==0) continue;
00414         TSOS monoState = thePropagator->propagate(lastState,*monoSurf);
00415         if (monoState.isValid()==0) continue;
00416 
00417         LocalVector monoShitLMom = sMonoHit.momentumAtEntry();
00418         GlobalVector monoShitGMom = monoSurf->toGlobal(monoShitLMom);
00419         LocalPoint monoShitLPos = sMonoHit.localPosition();
00420         GlobalPoint monoShitGPos = monoSurf->toGlobal(monoShitLPos);
00421 
00422         GlobalVector monoTsosGMom = monoState.globalMomentum();
00423         GlobalError  monoTsosGMEr(monoState.cartesianError().matrix().Sub<AlgebraicSymMatrix33>(3,3));
00424         GlobalPoint  monoTsosGPos = monoState.globalPosition();
00425         GlobalError  monoTsosGPEr = monoState.cartesianError().position();
00426 
00427         GlobalPoint monoRhitGPos = tMonoHit->globalPosition();
00428         GlobalError monoRhitGPEr = tMonoHit->globalPositionError();
00429 
00430         double pullGPX_rs_mono = (monoRhitGPos.x()-monoShitGPos.x())/sqrt(monoRhitGPEr.cxx());
00431         double pullGPY_rs_mono = (monoRhitGPos.y()-monoShitGPos.y())/sqrt(monoRhitGPEr.cyy());
00432         double pullGPZ_rs_mono = (monoRhitGPos.z()-monoShitGPos.z())/sqrt(monoRhitGPEr.czz());
00433         //double pullGPX_rs_mono = (monoRhitGPos.x()-monoShitGPos.x());
00434         //double pullGPY_rs_mono = (monoRhitGPos.y()-monoShitGPos.y());
00435         //double pullGPZ_rs_mono = (monoRhitGPos.z()-monoShitGPos.z());
00436 
00437         title.str("");
00438         title << "PullGP_X_" << subdetId << "-" << layerId << "_rs_mono";
00439         hPullGP_X_rs_mono[title.str()]->Fill( pullGPX_rs_mono );
00440         title.str("");
00441         title << "PullGP_Y_" << subdetId << "-" << layerId << "_rs_mono";
00442         hPullGP_Y_rs_mono[title.str()]->Fill( pullGPY_rs_mono );
00443         title.str("");
00444         title << "PullGP_Z_" << subdetId << "-" << layerId << "_rs_mono";
00445         hPullGP_Z_rs_mono[title.str()]->Fill( pullGPZ_rs_mono );
00446 
00447         double pullGPX_tr_mono = (monoTsosGPos.x()-monoRhitGPos.x())/sqrt(monoTsosGPEr.cxx()+monoRhitGPEr.cxx());
00448         double pullGPY_tr_mono = (monoTsosGPos.y()-monoRhitGPos.y())/sqrt(monoTsosGPEr.cyy()+monoRhitGPEr.cyy());
00449         double pullGPZ_tr_mono = (monoTsosGPos.z()-monoRhitGPos.z())/sqrt(monoTsosGPEr.czz()+monoRhitGPEr.czz());
00450         //double pullGPX_tr_mono = (monoTsosGPos.x()-monoRhitGPos.x());
00451         //double pullGPY_tr_mono = (monoTsosGPos.y()-monoRhitGPos.y());
00452         //double pullGPZ_tr_mono = (monoTsosGPos.z()-monoRhitGPos.z());
00453 
00454         title.str("");
00455         title << "PullGP_X_" << subdetId << "-" << layerId << "_tr_mono";
00456         hPullGP_X_tr_mono[title.str()]->Fill( pullGPX_tr_mono );
00457         title.str("");
00458         title << "PullGP_Y_" << subdetId << "-" << layerId << "_tr_mono";
00459         hPullGP_Y_tr_mono[title.str()]->Fill( pullGPY_tr_mono );
00460         title.str("");
00461         title << "PullGP_Z_" << subdetId << "-" << layerId << "_tr_mono";
00462         hPullGP_Z_tr_mono[title.str()]->Fill( pullGPZ_tr_mono );
00463 
00464         double pullGPX_ts_mono = (monoTsosGPos.x()-monoShitGPos.x())/sqrt(monoTsosGPEr.cxx());
00465         double pullGPY_ts_mono = (monoTsosGPos.y()-monoShitGPos.y())/sqrt(monoTsosGPEr.cyy());
00466         double pullGPZ_ts_mono = (monoTsosGPos.z()-monoShitGPos.z())/sqrt(monoTsosGPEr.czz());
00467         //double pullGPX_ts_mono = (monoTsosGPos.x()-monoShitGPos.x());
00468         //double pullGPY_ts_mono = (monoTsosGPos.y()-monoShitGPos.y());
00469         //double pullGPZ_ts_mono = (monoTsosGPos.z()-monoShitGPos.z());
00470 
00471         title.str("");
00472         title << "PullGP_X_" << subdetId << "-" << layerId << "_ts_mono";
00473         hPullGP_X_ts_mono[title.str()]->Fill( pullGPX_ts_mono );
00474         title.str("");
00475         title << "PullGP_Y_" << subdetId << "-" << layerId << "_ts_mono";
00476         hPullGP_Y_ts_mono[title.str()]->Fill( pullGPY_ts_mono );
00477         title.str("");
00478         title << "PullGP_Z_" << subdetId << "-" << layerId << "_ts_mono";
00479         hPullGP_Z_ts_mono[title.str()]->Fill( pullGPZ_ts_mono );
00480 
00481         double pullGMX_ts_mono = (monoTsosGMom.x()-monoShitGMom.x())/sqrt(monoTsosGMEr.cxx());
00482         double pullGMY_ts_mono = (monoTsosGMom.y()-monoShitGMom.y())/sqrt(monoTsosGMEr.cyy());
00483         double pullGMZ_ts_mono = (monoTsosGMom.z()-monoShitGMom.z())/sqrt(monoTsosGMEr.czz());
00484         //double pullGMX_ts_mono = (monoTsosGMom.x()-monoShitGMom.x());
00485         //double pullGMY_ts_mono = (monoTsosGMom.y()-monoShitGMom.y());
00486         //double pullGMZ_ts_mono = (monoTsosGMom.z()-monoShitGMom.z());
00487 
00488         title.str("");
00489         title << "PullGM_X_" << subdetId << "-" << layerId << "_ts_mono";
00490         hPullGM_X_ts_mono[title.str()]->Fill( pullGMX_ts_mono );
00491         title.str("");
00492         title << "PullGM_Y_" << subdetId << "-" << layerId << "_ts_mono";
00493         hPullGM_Y_ts_mono[title.str()]->Fill( pullGMY_ts_mono );
00494         title.str("");
00495         title << "PullGM_Z_" << subdetId << "-" << layerId << "_ts_mono";
00496         hPullGM_Z_ts_mono[title.str()]->Fill( pullGMZ_ts_mono );
00497 
00498         //stereo
00499         LogTrace("TestHits") << "STEREO HIT" << endl;
00500         CTTRHp tStereoHit = 
00501           theBuilder->build(dynamic_cast<const SiStripMatchedRecHit2D*>((rhit)->hit())->stereoHit());
00502         if (tStereoHit==0) continue;
00503         vector<PSimHit> assStereoSimHits = hitAssociator->associateHit(*tStereoHit->hit());
00504         if (assStereoSimHits.size()==0) continue;
00505         const PSimHit sStereoHit = *(assSimHits.begin());
00506         const Surface * stereoSurf = &( tStereoHit->det()->surface() );
00507         if (stereoSurf==0) continue;
00508         TSOS stereoState = thePropagator->propagate(lastState,*stereoSurf);
00509         if (stereoState.isValid()==0) continue;
00510 
00511         LocalVector stereoShitLMom = sStereoHit.momentumAtEntry();
00512         GlobalVector stereoShitGMom = stereoSurf->toGlobal(stereoShitLMom);
00513         LocalPoint stereoShitLPos = sStereoHit.localPosition();
00514         GlobalPoint stereoShitGPos = stereoSurf->toGlobal(stereoShitLPos);
00515 
00516         GlobalVector stereoTsosGMom = stereoState.globalMomentum();
00517         GlobalError  stereoTsosGMEr(stereoState.cartesianError().matrix().Sub<AlgebraicSymMatrix33>(3,3));
00518         GlobalPoint  stereoTsosGPos = stereoState.globalPosition();
00519         GlobalError  stereoTsosGPEr = stereoState.cartesianError().position();
00520 
00521         GlobalPoint stereoRhitGPos = tStereoHit->globalPosition();
00522         GlobalError stereoRhitGPEr = tStereoHit->globalPositionError();
00523 
00524         double pullGPX_rs_stereo = (stereoRhitGPos.x()-stereoShitGPos.x())/sqrt(stereoRhitGPEr.cxx());
00525         double pullGPY_rs_stereo = (stereoRhitGPos.y()-stereoShitGPos.y())/sqrt(stereoRhitGPEr.cyy());
00526         double pullGPZ_rs_stereo = (stereoRhitGPos.z()-stereoShitGPos.z())/sqrt(stereoRhitGPEr.czz());
00527         //double pullGPX_rs_stereo = (stereoRhitGPos.x()-stereoShitGPos.x());
00528         //double pullGPY_rs_stereo = (stereoRhitGPos.y()-stereoShitGPos.y());
00529         //double pullGPZ_rs_stereo = (stereoRhitGPos.z()-stereoShitGPos.z());
00530 
00531         title.str("");
00532         title << "PullGP_X_" << subdetId << "-" << layerId << "_rs_stereo";
00533         hPullGP_X_rs_stereo[title.str()]->Fill( pullGPX_rs_stereo );
00534         title.str("");
00535         title << "PullGP_Y_" << subdetId << "-" << layerId << "_rs_stereo";
00536         hPullGP_Y_rs_stereo[title.str()]->Fill( pullGPY_rs_stereo );
00537         title.str("");
00538         title << "PullGP_Z_" << subdetId << "-" << layerId << "_rs_stereo";
00539         hPullGP_Z_rs_stereo[title.str()]->Fill( pullGPZ_rs_stereo );
00540 
00541         double pullGPX_tr_stereo = (stereoTsosGPos.x()-stereoRhitGPos.x())/sqrt(stereoTsosGPEr.cxx()+stereoRhitGPEr.cxx());
00542         double pullGPY_tr_stereo = (stereoTsosGPos.y()-stereoRhitGPos.y())/sqrt(stereoTsosGPEr.cyy()+stereoRhitGPEr.cyy());
00543         double pullGPZ_tr_stereo = (stereoTsosGPos.z()-stereoRhitGPos.z())/sqrt(stereoTsosGPEr.czz()+stereoRhitGPEr.czz());
00544         //double pullGPX_tr_stereo = (stereoTsosGPos.x()-stereoRhitGPos.x());
00545         //double pullGPY_tr_stereo = (stereoTsosGPos.y()-stereoRhitGPos.y());
00546         //double pullGPZ_tr_stereo = (stereoTsosGPos.z()-stereoRhitGPos.z());
00547 
00548         title.str("");
00549         title << "PullGP_X_" << subdetId << "-" << layerId << "_tr_stereo";
00550         hPullGP_X_tr_stereo[title.str()]->Fill( pullGPX_tr_stereo );
00551         title.str("");
00552         title << "PullGP_Y_" << subdetId << "-" << layerId << "_tr_stereo";
00553         hPullGP_Y_tr_stereo[title.str()]->Fill( pullGPY_tr_stereo );
00554         title.str("");
00555         title << "PullGP_Z_" << subdetId << "-" << layerId << "_tr_stereo";
00556         hPullGP_Z_tr_stereo[title.str()]->Fill( pullGPZ_tr_stereo );
00557 
00558         double pullGPX_ts_stereo = (stereoTsosGPos.x()-stereoShitGPos.x())/sqrt(stereoTsosGPEr.cxx());
00559         double pullGPY_ts_stereo = (stereoTsosGPos.y()-stereoShitGPos.y())/sqrt(stereoTsosGPEr.cyy());
00560         double pullGPZ_ts_stereo = (stereoTsosGPos.z()-stereoShitGPos.z())/sqrt(stereoTsosGPEr.czz());
00561         //double pullGPX_ts_stereo = (stereoTsosGPos.x()-stereoShitGPos.x());
00562         //double pullGPY_ts_stereo = (stereoTsosGPos.y()-stereoShitGPos.y());
00563         //double pullGPZ_ts_stereo = (stereoTsosGPos.z()-stereoShitGPos.z());
00564 
00565         title.str("");
00566         title << "PullGP_X_" << subdetId << "-" << layerId << "_ts_stereo";
00567         hPullGP_X_ts_stereo[title.str()]->Fill( pullGPX_ts_stereo );
00568         title.str("");
00569         title << "PullGP_Y_" << subdetId << "-" << layerId << "_ts_stereo";
00570         hPullGP_Y_ts_stereo[title.str()]->Fill( pullGPY_ts_stereo );
00571         title.str("");
00572         title << "PullGP_Z_" << subdetId << "-" << layerId << "_ts_stereo";
00573         hPullGP_Z_ts_stereo[title.str()]->Fill( pullGPZ_ts_stereo );
00574 
00575         double pullGMX_ts_stereo = (stereoTsosGMom.x()-stereoShitGMom.x())/sqrt(stereoTsosGMEr.cxx());
00576         double pullGMY_ts_stereo = (stereoTsosGMom.y()-stereoShitGMom.y())/sqrt(stereoTsosGMEr.cyy());
00577         double pullGMZ_ts_stereo = (stereoTsosGMom.z()-stereoShitGMom.z())/sqrt(stereoTsosGMEr.czz());
00578         //double pullGMX_ts_stereo = (stereoTsosGMom.x()-stereoShitGMom.x());
00579         //double pullGMY_ts_stereo = (stereoTsosGMom.y()-stereoShitGMom.y());
00580         //double pullGMZ_ts_stereo = (stereoTsosGMom.z()-stereoShitGMom.z());
00581 
00582         title.str("");
00583         title << "PullGM_X_" << subdetId << "-" << layerId << "_ts_stereo";
00584         hPullGM_X_ts_stereo[title.str()]->Fill( pullGMX_ts_stereo );
00585         title.str("");
00586         title << "PullGM_Y_" << subdetId << "-" << layerId << "_ts_stereo";
00587         hPullGM_Y_ts_stereo[title.str()]->Fill( pullGMY_ts_stereo );
00588         title.str("");
00589         title << "PullGM_Z_" << subdetId << "-" << layerId << "_ts_stereo";
00590         hPullGM_Z_ts_stereo[title.str()]->Fill( pullGMZ_ts_stereo );
00591       }    
00592       lastState = updatedState;
00593     }
00594     LogTrace("TestHits") << "traj chi2="  << tchi2 ;
00595     LogTrace("TestHits") << "track chi2=" << result[0].chiSquared() ;
00596   }
00597   delete hitAssociator;
00598   LogTrace("TestHits") << "end of event" << std::endl;
00599 }

void TestHits::beginJob ( const edm::EventSetup iSetup  )  [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 40 of file TestHits.cc.

References builderName, file, fit, fname, edm::EventSetup::get(), hChi2Increment, hClsize_vs_Chi2, hProcess_vs_Chi2, hPullGM_X_ts, hPullGM_X_ts_mono, hPullGM_X_ts_stereo, hPullGM_Y_ts, hPullGM_Y_ts_mono, hPullGM_Y_ts_stereo, hPullGM_Z_ts, hPullGM_Z_ts_mono, hPullGM_Z_ts_stereo, hPullGP_X_rs, hPullGP_X_rs_mono, hPullGP_X_rs_stereo, hPullGP_X_tr, hPullGP_X_tr_mono, hPullGP_X_tr_stereo, hPullGP_X_ts, hPullGP_X_ts_mono, hPullGP_X_ts_stereo, hPullGP_Y_rs, hPullGP_Y_rs_mono, hPullGP_Y_rs_stereo, hPullGP_Y_tr, hPullGP_Y_tr_mono, hPullGP_Y_tr_stereo, hPullGP_Y_ts, hPullGP_Y_ts_mono, hPullGP_Y_ts_stereo, hPullGP_Z_rs, hPullGP_Z_rs_mono, hPullGP_Z_rs_stereo, hPullGP_Z_tr, hPullGP_Z_tr_mono, hPullGP_Z_tr_stereo, hPullGP_Z_ts, hPullGP_Z_ts_mono, hPullGP_Z_ts_stereo, hTotChi2Increment, i, j, propagatorName, theBuilder, theG, theMF, thePropagator, and title.

00041 {
00042  
00043   iSetup.get<TrackerDigiGeometryRecord>().get(theG);
00044   iSetup.get<IdealMagneticFieldRecord>().get(theMF);  
00045   iSetup.get<TrackingComponentsRecord>().get(propagatorName,thePropagator);
00046   iSetup.get<TransientRecHitRecord>().get(builderName,theBuilder);
00047   iSetup.get<TrackingComponentsRecord>().get(fname, fit);
00048  
00049   file = new TFile("testhits.root","recreate");
00050   for (int i=0; i!=6; i++)
00051     for (int j=0; j!=9; j++){
00052       if (i==0 && j>2) break;
00053       if (i==1 && j>1) break;
00054       if (i==2 && j>3) break;
00055       if (i==3 && j>2) break;
00056       if (i==4 && j>5) break;
00057       if (i==5 && j>8) break;
00058       title.str("");
00059       title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts";
00060       hPullGP_X_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00061       title.str("");
00062       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts";
00063       hPullGP_Y_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00064       title.str("");
00065       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts";
00066       hPullGP_Z_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00067       title.str("");
00068       title << "Chi2Increment_" << i+1 << "-" << j+1;
00069       hChi2Increment[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);
00070 
00071       title.str("");
00072       title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts";
00073       hPullGM_X_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00074       title.str("");
00075       title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts";
00076       hPullGM_Y_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00077       title.str("");
00078       title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts";
00079       hPullGM_Z_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00080 
00081       title.str("");
00082       title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr";
00083       hPullGP_X_tr[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00084       title.str("");
00085       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr";
00086       hPullGP_Y_tr[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00087       title.str("");
00088       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr";
00089       hPullGP_Z_tr[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00090 
00091       title.str("");
00092       title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs";
00093       hPullGP_X_rs[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00094       title.str("");
00095       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs";
00096       hPullGP_Y_rs[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00097       title.str("");
00098       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs";
00099       hPullGP_Z_rs[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00100 
00101       if ( ((i==2||i==4)&&(j==0||j==1)) || (i==3||i==5) ){
00102         //mono
00103         title.str("");
00104         title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_mono";
00105         hPullGP_X_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00106         title.str("");
00107         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_mono";
00108         hPullGP_Y_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00109         title.str("");
00110         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_mono";
00111         hPullGP_Z_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00112 
00113         title.str("");
00114         title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_mono";
00115         hPullGM_X_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00116         title.str("");
00117         title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_mono";
00118         hPullGM_Y_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00119         title.str("");
00120         title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_mono";
00121         hPullGM_Z_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00122 
00123         title.str("");
00124         title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_mono";
00125         hPullGP_X_tr_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00126         title.str("");
00127         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_mono";
00128         hPullGP_Y_tr_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00129         title.str("");
00130         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_mono";
00131         hPullGP_Z_tr_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00132 
00133         title.str("");
00134         title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_mono";
00135         hPullGP_X_rs_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00136         title.str("");
00137         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_mono";
00138         hPullGP_Y_rs_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00139         title.str("");
00140         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_mono";
00141         hPullGP_Z_rs_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00142 
00143         //stereo
00144         title.str("");
00145         title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_stereo";
00146         hPullGP_X_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00147         title.str("");
00148         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
00149         hPullGP_Y_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00150         title.str("");
00151         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
00152         hPullGP_Z_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00153 
00154         title.str("");
00155         title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_stereo";
00156         hPullGM_X_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00157         title.str("");
00158         title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
00159         hPullGM_Y_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00160         title.str("");
00161         title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
00162         hPullGM_Z_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00163 
00164         title.str("");
00165         title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_stereo";
00166         hPullGP_X_tr_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00167         title.str("");
00168         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_stereo";
00169         hPullGP_Y_tr_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00170         title.str("");
00171         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_stereo";
00172         hPullGP_Z_tr_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00173 
00174         title.str("");
00175         title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_stereo";
00176         hPullGP_X_rs_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00177         title.str("");
00178         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_stereo";
00179         hPullGP_Y_rs_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00180         title.str("");
00181         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_stereo";
00182         hPullGP_Z_rs_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00183       }
00184     }
00185   hTotChi2Increment = new TH1F("TotChi2Increment","TotChi2Increment",1000,0,100);
00186   hProcess_vs_Chi2  = new TH2F("Process_vs_Chi2","Process_vs_Chi2",1000,0,100,17,-0.5,16.5);  
00187   hClsize_vs_Chi2  = new TH2F("Clsize_vs_Chi2","Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
00188 }

void TestHits::endJob ( void   )  [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 942 of file TestHits.cc.

References file, hChi2Increment, hClsize_vs_Chi2, hProcess_vs_Chi2, hPullGM_X_ts, hPullGM_X_ts_mono, hPullGM_X_ts_stereo, hPullGM_Y_ts, hPullGM_Y_ts_mono, hPullGM_Y_ts_stereo, hPullGM_Z_ts, hPullGM_Z_ts_mono, hPullGM_Z_ts_stereo, hPullGP_X_rs, hPullGP_X_rs_mono, hPullGP_X_rs_stereo, hPullGP_X_tr, hPullGP_X_tr_mono, hPullGP_X_tr_stereo, hPullGP_X_ts, hPullGP_X_ts_mono, hPullGP_X_ts_stereo, hPullGP_Y_rs, hPullGP_Y_rs_mono, hPullGP_Y_rs_stereo, hPullGP_Y_tr, hPullGP_Y_tr_mono, hPullGP_Y_tr_stereo, hPullGP_Y_ts, hPullGP_Y_ts_mono, hPullGP_Y_ts_stereo, hPullGP_Z_rs, hPullGP_Z_rs_mono, hPullGP_Z_rs_stereo, hPullGP_Z_tr, hPullGP_Z_tr_mono, hPullGP_Z_tr_stereo, hPullGP_Z_ts, hPullGP_Z_ts_mono, hPullGP_Z_ts_stereo, hTotChi2Increment, i, j, and title.

00942                       {
00943   //file->Write();
00944   TDirectory * chi2i = file->mkdir("Chi2_Increment");
00945 
00946   TDirectory * gp_ts = file->mkdir("GP_TSOS-SimHit");
00947   TDirectory * gm_ts = file->mkdir("GM_TSOS-SimHit");
00948   TDirectory * gp_tr = file->mkdir("GP_TSOS-RecHit");
00949   TDirectory * gp_rs = file->mkdir("GP_RecHit-SimHit");
00950 
00951   TDirectory * gp_tsx = gp_ts->mkdir("X");
00952   TDirectory * gp_tsy = gp_ts->mkdir("Y");
00953   TDirectory * gp_tsz = gp_ts->mkdir("Z");
00954   TDirectory * gm_tsx = gm_ts->mkdir("X");
00955   TDirectory * gm_tsy = gm_ts->mkdir("Y");
00956   TDirectory * gm_tsz = gm_ts->mkdir("Z");
00957   TDirectory * gp_trx = gp_tr->mkdir("X");
00958   TDirectory * gp_try = gp_tr->mkdir("Y");
00959   TDirectory * gp_trz = gp_tr->mkdir("Z");
00960   TDirectory * gp_rsx = gp_rs->mkdir("X");
00961   TDirectory * gp_rsy = gp_rs->mkdir("Y");
00962   TDirectory * gp_rsz = gp_rs->mkdir("Z");
00963 
00964   TDirectory * gp_tsx_mono = gp_ts->mkdir("MONOX");
00965   TDirectory * gp_tsy_mono = gp_ts->mkdir("MONOY");
00966   TDirectory * gp_tsz_mono = gp_ts->mkdir("MONOZ");
00967   TDirectory * gm_tsx_mono = gm_ts->mkdir("MONOX");
00968   TDirectory * gm_tsy_mono = gm_ts->mkdir("MONOY");
00969   TDirectory * gm_tsz_mono = gm_ts->mkdir("MONOZ");
00970   TDirectory * gp_trx_mono = gp_tr->mkdir("MONOX");
00971   TDirectory * gp_try_mono = gp_tr->mkdir("MONOY");
00972   TDirectory * gp_trz_mono = gp_tr->mkdir("MONOZ");
00973   TDirectory * gp_rsx_mono = gp_rs->mkdir("MONOX");
00974   TDirectory * gp_rsy_mono = gp_rs->mkdir("MONOY");
00975   TDirectory * gp_rsz_mono = gp_rs->mkdir("MONOZ");
00976 
00977   TDirectory * gp_tsx_stereo = gp_ts->mkdir("STEREOX");
00978   TDirectory * gp_tsy_stereo = gp_ts->mkdir("STEREOY");
00979   TDirectory * gp_tsz_stereo = gp_ts->mkdir("STEREOZ");
00980   TDirectory * gm_tsx_stereo = gm_ts->mkdir("STEREOX");
00981   TDirectory * gm_tsy_stereo = gm_ts->mkdir("STEREOY");
00982   TDirectory * gm_tsz_stereo = gm_ts->mkdir("STEREOZ");
00983   TDirectory * gp_trx_stereo = gp_tr->mkdir("STEREOX");
00984   TDirectory * gp_try_stereo = gp_tr->mkdir("STEREOY");
00985   TDirectory * gp_trz_stereo = gp_tr->mkdir("STEREOZ");
00986   TDirectory * gp_rsx_stereo = gp_rs->mkdir("STEREOX");
00987   TDirectory * gp_rsy_stereo = gp_rs->mkdir("STEREOY");
00988   TDirectory * gp_rsz_stereo = gp_rs->mkdir("STEREOZ");
00989 
00990   chi2i->cd();
00991   hTotChi2Increment->Write();
00992   hProcess_vs_Chi2->Write();
00993   hClsize_vs_Chi2->Write();
00994   for (int i=0; i!=6; i++)
00995     for (int j=0; j!=9; j++){
00996       if (i==0 && j>2) break;
00997       if (i==1 && j>1) break;
00998       if (i==2 && j>3) break;
00999       if (i==3 && j>2) break;
01000       if (i==4 && j>5) break;
01001       if (i==5 && j>8) break;
01002       chi2i->cd();
01003       title.str("");
01004       title << "Chi2Increment_" << i+1 << "-" << j+1;
01005       hChi2Increment[title.str()]->Write();
01006 
01007       gp_ts->cd();
01008       gp_tsx->cd();
01009       title.str("");
01010       title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts";
01011       hPullGP_X_ts[title.str()]->Write();
01012       gp_tsy->cd();
01013       title.str("");
01014       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts";
01015       hPullGP_Y_ts[title.str()]->Write();
01016       gp_tsz->cd();
01017       title.str("");
01018       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts";
01019       hPullGP_Z_ts[title.str()]->Write();
01020 
01021       gm_ts->cd();
01022       gm_tsx->cd();
01023       title.str("");
01024       title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts";
01025       hPullGM_X_ts[title.str()]->Write();
01026       gm_tsy->cd();
01027       title.str("");
01028       title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts";
01029       hPullGM_Y_ts[title.str()]->Write();
01030       gm_tsz->cd();
01031       title.str("");
01032       title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts";
01033       hPullGM_Z_ts[title.str()]->Write();
01034 
01035       gp_tr->cd();
01036       gp_trx->cd();
01037       title.str("");
01038       title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr";
01039       hPullGP_X_tr[title.str()]->Write();
01040       gp_try->cd();
01041       title.str("");
01042       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr";
01043       hPullGP_Y_tr[title.str()]->Write();
01044       gp_trz->cd();
01045       title.str("");
01046       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr";
01047       hPullGP_Z_tr[title.str()]->Write();
01048 
01049       gp_rs->cd();
01050       gp_rsx->cd();
01051       title.str("");
01052       title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs";
01053       hPullGP_X_rs[title.str()]->Write();
01054       gp_rsy->cd();
01055       title.str("");
01056       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs";
01057       hPullGP_Y_rs[title.str()]->Write();
01058       gp_rsz->cd();
01059       title.str("");
01060       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs";
01061       hPullGP_Z_rs[title.str()]->Write();
01062 
01063       if ( ((i==2||i==4)&&(j==0||j==1)) || (i==3||i==5) ){
01064         //mono
01065         gp_ts->cd();
01066         gp_tsx_mono->cd();
01067         title.str("");
01068         title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_mono";
01069         hPullGP_X_ts_mono[title.str()]->Write();
01070         gp_tsy_mono->cd();
01071         title.str("");
01072         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_mono";
01073         hPullGP_Y_ts_mono[title.str()]->Write();
01074         gp_tsz_mono->cd();
01075         title.str("");
01076         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_mono";
01077         hPullGP_Z_ts_mono[title.str()]->Write();
01078 
01079         gm_ts->cd();
01080         gm_tsx_mono->cd();
01081         title.str("");
01082         title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_mono";
01083         hPullGM_X_ts_mono[title.str()]->Write();
01084         gm_tsy_mono->cd();
01085         title.str("");
01086         title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_mono";
01087         hPullGM_Y_ts_mono[title.str()]->Write();
01088         gm_tsz_mono->cd();
01089         title.str("");
01090         title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_mono";
01091         hPullGM_Z_ts_mono[title.str()]->Write();
01092 
01093         gp_tr->cd();
01094         gp_trx_mono->cd();
01095         title.str("");
01096         title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_mono";
01097         hPullGP_X_tr_mono[title.str()]->Write();
01098         gp_try_mono->cd();
01099         title.str("");
01100         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_mono";
01101         hPullGP_Y_tr_mono[title.str()]->Write();
01102         gp_trz_mono->cd();
01103         title.str("");
01104         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_mono";
01105         hPullGP_Z_tr_mono[title.str()]->Write();
01106 
01107         gp_rs->cd();
01108         gp_rsx_mono->cd();
01109         title.str("");
01110         title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_mono";
01111         hPullGP_X_rs_mono[title.str()]->Write();
01112         gp_rsy_mono->cd();
01113         title.str("");
01114         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_mono";
01115         hPullGP_Y_rs_mono[title.str()]->Write();
01116         gp_rsz_mono->cd();
01117         title.str("");
01118         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_mono";
01119         hPullGP_Z_rs_mono[title.str()]->Write();
01120 
01121         //stereo
01122         gp_ts->cd();
01123         gp_tsx_stereo->cd();
01124         title.str("");
01125         title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_stereo";
01126         hPullGP_X_ts_stereo[title.str()]->Write();
01127         gp_tsy_stereo->cd();
01128         title.str("");
01129         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
01130         hPullGP_Y_ts_stereo[title.str()]->Write();
01131         gp_tsz_stereo->cd();
01132         title.str("");
01133         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
01134         hPullGP_Z_ts_stereo[title.str()]->Write();
01135 
01136         gm_ts->cd();
01137         gm_tsx_stereo->cd();
01138         title.str("");
01139         title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_stereo";
01140         hPullGM_X_ts_stereo[title.str()]->Write();
01141         gm_tsy_stereo->cd();
01142         title.str("");
01143         title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
01144         hPullGM_Y_ts_stereo[title.str()]->Write();
01145         gm_tsz_stereo->cd();
01146         title.str("");
01147         title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
01148         hPullGM_Z_ts_stereo[title.str()]->Write();
01149 
01150         gp_tr->cd();
01151         gp_trx_stereo->cd();
01152         title.str("");
01153         title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_stereo";
01154         hPullGP_X_tr_stereo[title.str()]->Write();
01155         gp_try_stereo->cd();
01156         title.str("");
01157         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_stereo";
01158         hPullGP_Y_tr_stereo[title.str()]->Write();
01159         gp_trz_stereo->cd();
01160         title.str("");
01161         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_stereo";
01162         hPullGP_Z_tr_stereo[title.str()]->Write();
01163 
01164         gp_rs->cd();
01165         gp_rsx_stereo->cd();
01166         title.str("");
01167         title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_stereo";
01168         hPullGP_X_rs_stereo[title.str()]->Write();
01169         gp_rsy_stereo->cd();
01170         title.str("");
01171         title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_stereo";
01172         hPullGP_Y_rs_stereo[title.str()]->Write();
01173         gp_rsz_stereo->cd();
01174         title.str("");
01175         title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_stereo";
01176         hPullGP_Z_rs_stereo[title.str()]->Write();
01177       }
01178     }
01179 
01180   file->Close();
01181 }

std::pair< LocalPoint, LocalVector > TestHits::projectHit ( const PSimHit hit,
const StripGeomDetUnit stripDet,
const BoundPlane plane 
) [private]

Definition at line 1186 of file TestHits.cc.

References funct::cos(), dir, PSimHit::localDirection(), PSimHit::localPosition(), scale, funct::sin(), StripGeomDetUnit::specificTopology(), StripTopology::strip(), StripTopology::stripAngle(), GeomDet::surface(), Surface::toGlobal(), GloballyPositioned< T >::toLocal(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by analyze().

01187 { 
01188    const StripTopology& topol = stripDet->specificTopology();
01189    GlobalPoint globalpos= stripDet->surface().toGlobal(hit.localPosition());
01190    LocalPoint localHit = plane.toLocal(globalpos);
01191    //track direction
01192    LocalVector locdir=hit.localDirection();
01193    //rotate track in new frame
01194    
01195    GlobalVector globaldir= stripDet->surface().toGlobal(locdir);
01196    LocalVector dir=plane.toLocal(globaldir);
01197    float scale = -localHit.z() / dir.z();
01198    
01199    LocalPoint projectedPos = localHit + scale*dir;
01200    
01201    float selfAngle = topol.stripAngle( topol.strip( hit.localPosition()));
01202    
01203    LocalVector stripDir( sin(selfAngle), cos(selfAngle), 0); // vector along strip in hit frame
01204    
01205    LocalVector localStripDir( plane.toLocal(stripDet->surface().toGlobal( stripDir)));
01206    
01207    return std::pair<LocalPoint,LocalVector>( projectedPos, localStripDir);
01208 }


Member Data Documentation

std::string TestHits::builderName [private]

Definition at line 68 of file TestHits.h.

Referenced by beginJob(), and TestHits().

const edm::ParameterSet TestHits::conf_ [private]

Definition at line 62 of file TestHits.h.

Referenced by TestHits().

TFile* TestHits::file [private]

Definition at line 79 of file TestHits.h.

Referenced by beginJob(), and endJob().

edm::ESHandle<TrajectoryFitter> TestHits::fit [private]

Definition at line 76 of file TestHits.h.

Referenced by analyze(), and beginJob().

std::string TestHits::fname [private]

Definition at line 70 of file TestHits.h.

Referenced by beginJob(), and TestHits().

std::map<std::string,TH1F*> TestHits::hChi2Increment [private]

Definition at line 93 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

TH2F * TestHits::hClsize_vs_Chi2 [private]

Definition at line 95 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

TrackerHitAssociator* TestHits::hitAssociator [private]

Definition at line 63 of file TestHits.h.

Referenced by analyze().

TH2F* TestHits::hProcess_vs_Chi2 [private]

Definition at line 95 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_X_ts [private]

Definition at line 84 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_X_ts_mono [private]

Definition at line 100 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_X_ts_stereo [private]

Definition at line 113 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_Y_ts [private]

Definition at line 85 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_Y_ts_mono [private]

Definition at line 101 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_Y_ts_stereo [private]

Definition at line 114 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_Z_ts [private]

Definition at line 86 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_Z_ts_mono [private]

Definition at line 102 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGM_Z_ts_stereo [private]

Definition at line 115 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_rs [private]

Definition at line 87 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_rs_mono [private]

Definition at line 103 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_rs_stereo [private]

Definition at line 116 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_tr [private]

Definition at line 90 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_tr_mono [private]

Definition at line 106 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_tr_stereo [private]

Definition at line 119 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_ts [private]

Definition at line 81 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_ts_mono [private]

Definition at line 97 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_X_ts_stereo [private]

Definition at line 110 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_rs [private]

Definition at line 88 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_rs_mono [private]

Definition at line 104 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_rs_stereo [private]

Definition at line 117 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_tr [private]

Definition at line 91 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_tr_mono [private]

Definition at line 107 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_tr_stereo [private]

Definition at line 120 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_ts [private]

Definition at line 82 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_ts_mono [private]

Definition at line 98 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Y_ts_stereo [private]

Definition at line 111 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_rs [private]

Definition at line 89 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_rs_mono [private]

Definition at line 105 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_rs_stereo [private]

Definition at line 118 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_tr [private]

Definition at line 92 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_tr_mono [private]

Definition at line 108 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_tr_stereo [private]

Definition at line 121 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_ts [private]

Definition at line 83 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_ts_mono [private]

Definition at line 99 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

std::map<std::string,TH1F*> TestHits::hPullGP_Z_ts_stereo [private]

Definition at line 112 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

TH1F* TestHits::hTotChi2Increment [private]

Definition at line 94 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().

double TestHits::maxeta [private]

Definition at line 65 of file TestHits.h.

Referenced by analyze(), and TestHits().

double TestHits::mineta [private]

Definition at line 65 of file TestHits.h.

Referenced by analyze(), and TestHits().

std::string TestHits::propagatorName [private]

Definition at line 67 of file TestHits.h.

Referenced by beginJob(), and TestHits().

std::string TestHits::srcName [private]

Definition at line 69 of file TestHits.h.

Referenced by analyze(), and TestHits().

edm::ESHandle<TransientTrackingRecHitBuilder> TestHits::theBuilder [private]

Definition at line 75 of file TestHits.h.

Referenced by analyze(), and beginJob().

edm::ESHandle<TrackerGeometry> TestHits::theG [private]

Definition at line 72 of file TestHits.h.

Referenced by analyze(), and beginJob().

edm::ESHandle<MagneticField> TestHits::theMF [private]

Definition at line 73 of file TestHits.h.

Referenced by analyze(), and beginJob().

edm::ESHandle<Propagator> TestHits::thePropagator [private]

Definition at line 74 of file TestHits.h.

Referenced by analyze(), and beginJob().

edm::Handle<TrackCandidateCollection> TestHits::theTCCollection [private]

Definition at line 77 of file TestHits.h.

Referenced by analyze().

std::stringstream TestHits::title [private]

Definition at line 80 of file TestHits.h.

Referenced by analyze(), beginJob(), and endJob().


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