CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

TestTrackHits Class Reference

#include <RecoTracker/TestTrackHits/src/TestTrackHits.cc>

Inheritance diagram for TestTrackHits:
edm::EDAnalyzer

List of all members.

Public Member Functions

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

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginRun (edm::Run &run, const edm::EventSetup &)
template<unsigned int D>
double computeChi2Increment (MeasurementExtractor, TransientTrackingRecHit::ConstRecHitPointer)
double computeChi2Increment (MeasurementExtractor me, TransientTrackingRecHit::ConstRecHitPointer hit)
virtual void endJob ()
std::pair< LocalPoint,
LocalVector
projectHit (const PSimHit &, const StripGeomDetUnit *, const BoundPlane &)

Private Attributes

std::string builderName
const edm::ParameterSet conf_
TH1F * energyLossRatio
TFile * file
TH1F * goodbadmerged
std::map< std::string, TH1F * > hChi2BadHit
std::map< std::string, TH1F * > hChi2DeltaHit
std::map< std::string, TH1F * > hChi2GoodHit
std::map< std::string, TH1F * > hChi2Increment
std::map< std::string, TH1F * > hChi2Increment_mono
std::map< std::string, TH1F * > hChi2Increment_stereo
std::map< std::string, TH2F * > hChi2IncrementVsEta
std::map< std::string, TH1F * > hChi2NSharedHit
std::map< std::string, TH1F * > hChi2SharedHit
TH2F * hClsize_vs_Chi2
TH1F * hClusterSize
TH2F * hGoodHit_vs_Chi2
TrackerHitAssociatorhitAssociator
TH2F * hPixClsize_vs_Chi2
TH1F * hPixClusterSize
TH1F * hPixSimHitVecSize
TH2F * hPrjClsize_vs_Chi2
TH1F * hPrjClusterSize
TH1F * hPrjSimHitVecSize
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 * hSimHitVecSize
TH2F * hSt1Clsize_vs_Chi2
TH1F * hSt1ClusterSize
TH1F * hSt1SimHitVecSize
TH2F * hSt2Clsize_vs_Chi2
TH1F * hSt2ClusterSize
TH1F * hSt2SimHitVecSize
TH1F * hTotChi2BadHit
TH1F * hTotChi2DeltaHit
TH1F * hTotChi2GoodHit
TH1F * hTotChi2Increment
TH1F * hTotChi2NSharedHit
TH1F * hTotChi2SharedHit
TH1F * mergedPull
std::string out
TH1F * probXbad
TH1F * probXdelta
TH1F * probXgood
TH1F * probXnoshare
TH1F * probXshared
TH1F * probYbad
TH1F * probYdelta
TH1F * probYgood
TH1F * probYnoshare
TH1F * probYshared
std::string propagatorName
std::string srcName
edm::ESHandle
< TransientTrackingRecHitBuilder
theBuilder
edm::ESHandle< TrackerGeometrytheG
edm::ESHandle< MagneticFieldtheMF
edm::ESHandle< PropagatorthePropagator
edm::ESHandle
< TrajectoryStateUpdator
theUpdator
std::stringstream title
std::string tpName
edm::ESHandle
< TrackAssociatorBase
trackAssociator
edm::Handle< edm::View
< reco::Track > > 
trackCollectionHandle
edm::Handle
< TrackingParticleCollection
trackingParticleCollectionHandle
edm::Handle< std::vector
< Trajectory > > 
trajCollectionHandle
edm::Handle
< TrajTrackAssociationCollection
trajTrackAssociationCollectionHandle
std::string updatorName

Detailed Description

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

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

Definition at line 55 of file TestTrackHits.h.


Constructor & Destructor Documentation

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

Definition at line 23 of file TestTrackHits.cc.

References builderName, conf_, edm::ParameterSet::getParameter(), LogTrace, out, propagatorName, srcName, tpName, and updatorName.

                                                          :
  conf_(iConfig) {
  LogTrace("TestTrackHits") << conf_;
  propagatorName = conf_.getParameter<std::string>("Propagator");   
  builderName = conf_.getParameter<std::string>("TTRHBuilder");   
  srcName = conf_.getParameter<std::string>("src");   
  tpName = conf_.getParameter<std::string>("tpname");   
  updatorName = conf_.getParameter<std::string>("updator");
  out = conf_.getParameter<std::string>("out");
//   ParameterSet cuts = conf_.getParameter<ParameterSet>("RecoTracksCuts"); 
//   selectRecoTracks = RecoTrackSelector(cuts.getParameter<double>("ptMin"),
//                                     cuts.getParameter<double>("minRapidity"),
//                                     cuts.getParameter<double>("maxRapidity"),
//                                     cuts.getParameter<double>("tip"),
//                                     cuts.getParameter<double>("lip"),
//                                     cuts.getParameter<int>("minHit"),
//                                     cuts.getParameter<double>("maxChi2"));
}
TestTrackHits::~TestTrackHits ( )

Definition at line 42 of file TestTrackHits.cc.

{}

Member Function Documentation

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

Implements edm::EDAnalyzer.

Definition at line 255 of file TestTrackHits.cc.

References abs, anyDirection, TrackerHitAssociator::associateHit(), TrackerHitAssociator::associateHitId(), SiPixelRawToDigiRegional_cfi::beamSpot, TrajectoryStateOnSurface::cartesianError(), heavyFlavorValidationHarvestingSequence_cff::combiner, computeChi2Increment(), prof2calltree::count, GlobalErrorBase< T, ErrorWeightType >::cxx(), GlobalErrorBase< T, ErrorWeightType >::cyy(), GlobalErrorBase< T, ErrorWeightType >::czz(), delta, edm::AssociationMap< Tag >::end(), energyLossRatio, spr::find(), edm::AssociationMap< Tag >::find(), first, edm::Event::getByLabel(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), goodbadmerged, hChi2BadHit, hChi2DeltaHit, hChi2GoodHit, hChi2Increment, hChi2Increment_mono, hChi2Increment_stereo, hChi2IncrementVsEta, hChi2NSharedHit, hChi2SharedHit, hClsize_vs_Chi2, hClusterSize, hGoodHit_vs_Chi2, hitAssociator, hPixClsize_vs_Chi2, hPixClusterSize, hPixSimHitVecSize, hPrjClsize_vs_Chi2, hPrjClusterSize, hPrjSimHitVecSize, 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, hSimHitVecSize, hSt1Clsize_vs_Chi2, hSt1ClusterSize, hSt1SimHitVecSize, hSt2Clsize_vs_Chi2, hSt2ClusterSize, hSt2SimHitVecSize, hTotChi2BadHit, hTotChi2DeltaHit, hTotChi2GoodHit, hTotChi2Increment, hTotChi2NSharedHit, hTotChi2SharedHit, i, errorMatrix2Lands_multiChannel::id, TrajectoryStateOnSurface::isValid(), j, findQualityFiles::jj, PSimHit::localPosition(), LogDebug, LogTrace, m, CartesianTrajectoryError::matrix(), mergedPull, PSimHit::momentumAtEntry(), CartesianTrajectoryError::position(), GloballyPositioned< T >::position(), createTree::pp, probXbad, probXdelta, probXgood, probXnoshare, probXshared, probYbad, probYdelta, probYgood, probYnoshare, probYshared, PSimHit::processType(), edm::ESHandle< T >::product(), edm::Handle< T >::product(), projectHit(), Propagator::propagate(), alignCSCRings::s, python::multivaluedict::sort(), mathSSE::sqrt(), srcName, theBuilder, theMF, title, Surface::toGlobal(), tpName, trackAssociator, trackCollectionHandle, trackingParticleCollectionHandle, trajCollectionHandle, trajTrackAssociationCollectionHandle, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

{
  LogDebug("TestTrackHits") << "new event" ;
  iEvent.getByLabel(srcName,trajCollectionHandle);
  iEvent.getByLabel(srcName,trackCollectionHandle);
  iEvent.getByLabel(srcName,trajTrackAssociationCollectionHandle);
  iEvent.getByLabel(tpName,trackingParticleCollectionHandle);
  edm::Handle<reco::BeamSpot> beamSpot;
  iEvent.getByLabel("offlineBeamSpot",beamSpot); 

  LogTrace("TestTrackHits") << "Tr collection size=" << trackCollectionHandle->size();
  LogTrace("TestTrackHits") << "TP collection size=" << trackingParticleCollectionHandle->size();

  hitAssociator = new TrackerHitAssociator(iEvent);
  
  reco::RecoToSimCollection recSimColl=trackAssociator->associateRecoToSim(trackCollectionHandle,
                                                                           trackingParticleCollectionHandle,
                                                                           &iEvent);
  
  TrajectoryStateCombiner combiner;

  int evtHits = 0;
  int i=0;
  int yy=0;
  int yyy=0;
  for(std::vector<Trajectory>::const_iterator it = trajCollectionHandle->begin(); it!=trajCollectionHandle->end();it++){
    
    LogTrace("TestTrackHits") << "\n*****************new trajectory********************" ;
    double tchi2 = 0;

    std::vector<TrajectoryMeasurement> tmColl = it->measurements();

    edm::Ref<std::vector<Trajectory> >  traj(trajCollectionHandle, i);
    reco::TrackRef tmptrack = (*trajTrackAssociationCollectionHandle.product())[traj];
    edm::RefToBase<reco::Track> track(tmptrack);
    //     if ( !selectRecoTracks( *track,beamSpot.product() ) ) {
    //       LogTrace("TestTrackHits") << "track does not pass quality cuts: skippingtrack #" << ++yyy;
    //       i++;
    //       continue;
    //     }

    std::vector<std::pair<TrackingParticleRef, double> > tP;
    if(recSimColl.find(track) != recSimColl.end()){
      tP = recSimColl[track];
      if (tP.size()!=0) {
        edm::LogVerbatim("TestTrackHits") << "reco::Track #" << ++yyy << " with pt=" << track->pt() 
                                          << " associated with quality:" << tP.begin()->second <<" good track #" << ++yy << " has hits:" << track->numberOfValidHits() << "\n";
      }
    }else{
      edm::LogVerbatim("TestTrackHits") << "reco::Track #" << ++yyy << " with pt=" << track->pt()
                                         << " NOT associated to any TrackingParticle" << "\n";
      i++;
      continue;
    }
    //     if(recSimColl.find(track) != recSimColl.end()) {
    //       tP = recSimColl[track];
    //     } else {
    //       LogTrace("TestTrackHits") << "fake track: skipping track " << ++yyy;
    //       continue;//skip fake tracks
    //     }
    //     if (tP.size()==0) {
    //       LogTrace("TestTrackHits") << "fake track: skipping track " << ++yyy;
    //       continue;
    //     }
    TrackingParticleRef tp = tP.begin()->first;
    LogTrace("TestTrackHits") << "a tp is associated with fraction=" << tP.begin()->second;
    //LogTrace("TestTrackHits") << "last tp is associated with fraction=" << (tP.end()-1)->second;
    std::vector<unsigned int> tpids;
    for (TrackingParticle::g4t_iterator g4T=tp->g4Track_begin(); g4T!=tp->g4Track_end(); ++g4T) {
      LogTrace("TestTrackHits") << "tp id=" << g4T->trackId();
      tpids.push_back(g4T->trackId());
    }

    //LogTrace("TestTrackHits") << "Analyzing hits of track number " << ++yyy << " good track number " << ++yy;
    int pp = 0;
    for (std::vector<TrajectoryMeasurement>::iterator tm=tmColl.begin();tm!=tmColl.end();++tm){
      
      tchi2+=tm->estimate();

      LogTrace("TestTrackHits") << "+++++++++++++++++new hit+++++++++++++++++" ;
      CTTRHp rhit = tm->recHit();
      //TSOS state = tm->backwardPredictedState();
      //TSOS state = tm->forwardPredictedState();
      TSOS state = combiner(tm->backwardPredictedState(), tm->forwardPredictedState());

      if (rhit->isValid()==0 && rhit->det()!=0) continue;
      evtHits++;
      LogTrace("TestTrackHits") << "valid hit #" << ++pp << "of hits=" << track->numberOfValidHits();

      int subdetId = rhit->det()->geographicalId().subdetId();
      int layerId  = 0;
      DetId id = rhit->det()->geographicalId();
      if (id.subdetId()==3) layerId = ((TIBDetId)(id)).layer();
      if (id.subdetId()==5) layerId = ((TOBDetId)(id)).layer();
      if (id.subdetId()==1) layerId = ((PXBDetId)(id)).layer();
      if (id.subdetId()==4) layerId = ((TIDDetId)(id)).wheel();
      if (id.subdetId()==6) layerId = ((TECDetId)(id)).wheel();
      if (id.subdetId()==2) layerId = ((PXFDetId)(id)).disk();
      LogTrace("TestTrackHits") << "subdetId=" << subdetId << " layerId=" << layerId ;

      const Surface * surf = rhit->surface();
      if (surf==0) continue;

      double energyLoss_ = 0.;
      unsigned int monoId = 0;
      std::vector<double> energyLossM;
      std::vector<double> energyLossS;
      std::vector<PSimHit> assSimHits = hitAssociator->associateHit(*(rhit)->hit());
      unsigned int  simhitvecsize = assSimHits.size();
      if (simhitvecsize==0) continue;
      PSimHit shit;
      std::vector<unsigned int> trackIds;
      energyLossS.clear();
      energyLossM.clear();
      for(std::vector<PSimHit>::const_iterator m=assSimHits.begin(); m<assSimHits.end(); m++){
        unsigned int tId = m->trackId();
        if (find(trackIds.begin(),trackIds.end(),tId)==trackIds.end()) trackIds.push_back(tId);
        if (m->energyLoss()>energyLoss_) {
          shit=*m;
          energyLoss_ = m->energyLoss();
        }
        if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
          if (monoId==0) monoId = m->detUnitId();
          if (monoId == m->detUnitId()){
            energyLossM.push_back(m->energyLoss());
          }
          else {
            energyLossS.push_back(m->energyLoss());
          }
          //std::cout << "detUnitId="  << m->detUnitId() << " trackId=" << m->trackId() << " energyLoss=" << m->energyLoss() << std::endl;
        } else {
          energyLossM.push_back(m->energyLoss());
        }
      }
      //double delta = 99999;
      //LocalPoint rhitLPv = rhit->localPosition();
      //vector<PSimHit> assSimHits = hitAssociator->associateHit(*(rhit)->hit());
      //unsigned int  simhitvecsize = assSimHits.size();
      //if (simhitvecsize==0) continue;
      //PSimHit shit;
      //for(std::vector<PSimHit>::const_iterator m=assSimHits.begin(); m<assSimHits.end(); m++){
      //  if ((m->localPosition()-rhitLPv).mag()<delta) {
      //    shit=*m;
      //    delta = (m->localPosition()-rhitLPv).mag();
      //  }
      //}

      //plot chi2 increment
      double chi2increment = tm->estimate();
      LogTrace("TestTrackHits") << "tm->estimate()=" << tm->estimate();
      title.str("");
      title << "Chi2Increment_" << subdetId << "-" << layerId;
      hChi2Increment[title.str()]->Fill( chi2increment );
      title.str("");
      title << "Chi2IncrementVsEta_" << subdetId << "-" << layerId;
      hChi2IncrementVsEta[title.str()]->Fill( track->eta(), chi2increment );
      hTotChi2Increment->Fill( chi2increment );
      hProcess_vs_Chi2->Fill( chi2increment, shit.processType() );

      int clustersize = 0;
      bool mergedhit = false;
      if (dynamic_cast<const SiPixelRecHit*>(rhit->hit())){     
        clustersize =  ((const SiPixelRecHit*)(rhit->hit()))->cluster()->size() ;
        hPixClsize_vs_Chi2->Fill(chi2increment, clustersize);
        hPixClusterSize->Fill(clustersize);
        hPixSimHitVecSize->Fill(simhitvecsize);
        if (simhitvecsize>1) mergedhit = true;
      }
      else if (dynamic_cast<const SiStripRecHit2D*>(rhit->hit())){
        clustersize =  ((const SiStripRecHit2D*)(rhit->hit()))->cluster()->amplitudes().size() ;
        hSt1Clsize_vs_Chi2->Fill(chi2increment, clustersize);
        hSt1ClusterSize->Fill(clustersize);
        hSt1SimHitVecSize->Fill(simhitvecsize);
        if (simhitvecsize>1) mergedhit = true;
      }
      else if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())){
        int clsize1 = ((const SiStripMatchedRecHit2D*)(rhit->hit()))->monoCluster().amplitudes().size();
        int clsize2 =  ((const SiStripMatchedRecHit2D*)(rhit->hit()))->stereoCluster().amplitudes().size();
        if (clsize1>clsize2) clustersize = clsize1;
        else clustersize = clsize2;
        hSt2Clsize_vs_Chi2->Fill(chi2increment, clustersize);
        hSt2ClusterSize->Fill(clustersize);
        hSt2SimHitVecSize->Fill(simhitvecsize);
        if (simhitvecsize>2) mergedhit = true;
      }
      else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(rhit->hit())){
        clustersize =  ((const ProjectedSiStripRecHit2D*)(rhit->hit()))->originalHit().cluster()->amplitudes().size();
        hPrjClsize_vs_Chi2->Fill(chi2increment, clustersize);
        hPrjClusterSize->Fill(clustersize);
        hPrjSimHitVecSize->Fill(simhitvecsize);
        if (simhitvecsize>1) mergedhit = true;
      }
      hClsize_vs_Chi2->Fill( chi2increment, clustersize);
      hClusterSize->Fill(clustersize);
      hSimHitVecSize->Fill(simhitvecsize);

      //       if (dynamic_cast<const SiPixelRecHit*>(rhit->hit()))     
      //        hClsize_vs_Chi2->Fill( chi2increment, ((const SiPixelRecHit*)(rhit->hit()))->cluster()->size() );
      //       if (dynamic_cast<const SiStripRecHit2D*>(rhit->hit()))   
      //        hClsize_vs_Chi2->Fill( chi2increment, ((const SiStripRecHit2D*)(rhit->hit()))->cluster()->amplitudes().size() );

      std::vector<SimHitIdpr> simTrackIds = hitAssociator->associateHitId(*(rhit)->hit());
      bool goodhit = false;
      for(size_t j=0; j<simTrackIds.size(); j++){
        LogTrace("TestTrackHits") << "hit id=" << simTrackIds[j].first;
        for (size_t jj=0; jj<tpids.size(); jj++){
          if (simTrackIds[j].first == tpids[jj]) goodhit = true;
          break;
        }
      }
      bool shared = true;
      bool ioniOnly = true;
      const SiPixelRecHit* pix = dynamic_cast<const SiPixelRecHit*>(rhit->hit());
      if (goodhit) {
        if (energyLossM.size()>1&&energyLossS.size()<=1) {
          sort(energyLossM.begin(),energyLossM.end(),greater<double>());
          energyLossRatio->Fill(energyLossM[1]/energyLossM[0]);
        }
        else if (energyLossS.size()>1&&energyLossM.size()<=1) {
          sort(energyLossS.begin(),energyLossS.end(),greater<double>());
          energyLossRatio->Fill(energyLossS[1]/energyLossS[0]);
        }
        else if (energyLossS.size()>1&&energyLossM.size()>1) {
          sort(energyLossM.begin(),energyLossM.end(),greater<double>());
          sort(energyLossS.begin(),energyLossS.end(),greater<double>());
          energyLossM[1]/energyLossM[0] > energyLossS[1]/energyLossS[0] 
            ? energyLossRatio->Fill(energyLossM[1]/energyLossM[0]) 
            : energyLossRatio->Fill(energyLossS[1]/energyLossS[0]);
        }
        if ( mergedhit ) {
          //not optimized for matched hits
          LogVerbatim("TestTrackHits") << "MERGED HIT" << std::endl;
          unsigned int idc = 0;
          for (size_t jj=0; jj<tpids.size(); jj++){
            idc += std::count(trackIds.begin(),trackIds.end(),tpids[jj]);
          }
          if (idc==trackIds.size()) {
            shared = false;
          }
          for(std::vector<PSimHit>::const_iterator m=assSimHits.begin()+1; m<assSimHits.end(); m++){
            if ((m->processType()!=7&&m->processType()!=8&&m->processType()!=9)&&abs(m->particleType())!=11){
              ioniOnly = false;
              break;
            }
          }
          if (ioniOnly&&!shared) {
            title.str("");
            title << "Chi2DeltaHit_" << subdetId << "-" << layerId;
            hChi2DeltaHit[title.str()]->Fill( chi2increment );
            hTotChi2DeltaHit->Fill( chi2increment );      
            if (pix) {
              probXdelta->Fill(pix->probabilityX());
              probYdelta->Fill(pix->probabilityY());
            }       
          } else if(!ioniOnly&&!shared) {
            title.str("");
            title << "Chi2NSharedHit_" << subdetId << "-" << layerId;
            hChi2NSharedHit[title.str()]->Fill( chi2increment );
            hTotChi2NSharedHit->Fill( chi2increment );    
            if (pix) {
              probXnoshare->Fill(pix->probabilityX());
              probYnoshare->Fill(pix->probabilityY());
            }       
          } else {
            title.str("");
            title << "Chi2SharedHit_" << subdetId << "-" << layerId;
            hChi2SharedHit[title.str()]->Fill( chi2increment );
            hTotChi2SharedHit->Fill( chi2increment );     
            if (pix) {
              probXshared->Fill(pix->probabilityX());
              probYshared->Fill(pix->probabilityY());
            }
          }
          
          for(std::vector<PSimHit>::const_iterator m=assSimHits.begin(); m<assSimHits.end(); m++) {
            unsigned int tId = m->trackId();
            LogVerbatim("TestTrackHits") << "component with id=" << tId <<  " eLoss=" << m->energyLoss() << " pType=" <<  m->processType();
            if (find(tpids.begin(),tpids.end(),tId)==tpids.end()) continue;
            if (m->processType()==2) {
              GlobalPoint gpr = rhit->globalPosition();
              AlgebraicSymMatrix33 ger = rhit->globalPositionError().matrix();
              GlobalPoint gps = surf->toGlobal(m->localPosition());
              LogVerbatim("TestTrackHits") << gpr << " " << gps << " " << ger;
              ROOT::Math::SVector<double,3> delta;
              delta[0]=gpr.x()-gps.x();
              delta[1]=gpr.y()-gps.y();
              delta[2]=gpr.z()-gps.z();
              LogVerbatim("TestTrackHits") << delta << " " << ger ;
              double mpull = sqrt(delta[0]*delta[0]/ger[0][0]+delta[1]*delta[1]/ger[1][1]+delta[2]*delta[2]/ger[2][2]);
              LogVerbatim("TestTrackHits") << "hit pull=" << mpull;//ger.similarity(delta);
              mergedPull->Fill(mpull);
              break;
            }
          }
        } else {
          LogVerbatim("TestTrackHits") << "good hit" ;
          title.str("");
          title << "Chi2GoodHit_" << subdetId << "-" << layerId;
          hChi2GoodHit[title.str()]->Fill( chi2increment );
          hTotChi2GoodHit->Fill( chi2increment );         
          if (pix) {
            probXgood->Fill(pix->probabilityX());
            probYgood->Fill(pix->probabilityY());
          }
        }
      } else {
        LogVerbatim("TestTrackHits") << "bad hit" ;
        title.str("");
        title << "Chi2BadHit_" << subdetId << "-" << layerId;
        hChi2BadHit[title.str()]->Fill( chi2increment );
        hTotChi2BadHit->Fill( chi2increment );
        goodbadmerged->Fill(2);
        if (pix) {
          probXbad->Fill(pix->probabilityX());
          probYbad->Fill(pix->probabilityY());
        }
      }
      hGoodHit_vs_Chi2->Fill(chi2increment,goodhit);

      LocalVector shitLMom;
      LocalPoint shitLPos;
      if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
        if (simhitvecsize>2 && goodhit) { 
          if (ioniOnly&&!shared) goodbadmerged->Fill(3);
          else if(!ioniOnly&&!shared) goodbadmerged->Fill(4);
          else goodbadmerged->Fill(5);
        }
        else if (goodhit) goodbadmerged->Fill(1);
        double rechitmatchedx = rhit->localPosition().x();
        double rechitmatchedy = rhit->localPosition().y();
        double mindist = 999999;
        float distx, disty;
        std::pair<LocalPoint,LocalVector> closestPair;
        const StripGeomDetUnit* stripDet =(StripGeomDetUnit*) ((const GluedGeomDet *)(rhit)->det())->stereoDet();
        const BoundPlane& plane = (rhit)->det()->surface();
        for(std::vector<PSimHit>::const_iterator m=assSimHits.begin(); m<assSimHits.end(); m++){
          //project simhit;
          std::pair<LocalPoint,LocalVector> hitPair = projectHit((*m),stripDet,plane);
          distx = fabs(rechitmatchedx - hitPair.first.x());
          disty = fabs(rechitmatchedy - hitPair.first.y());
          double dist = distx*distx+disty*disty;
          if(sqrt(dist)<mindist){
            mindist = dist;
            closestPair = hitPair;
          }
        }
        shitLPos = closestPair.first;
        shitLMom = closestPair.second;
      } else {
        if (simhitvecsize>1 && goodhit) { 
          if (ioniOnly&&!shared) goodbadmerged->Fill(3);
          else if(!ioniOnly&&!shared) goodbadmerged->Fill(4);
          else goodbadmerged->Fill(5);
        }
        else if (goodhit) goodbadmerged->Fill(1);
        shitLPos = shit.localPosition();        
        shitLMom = shit.momentumAtEntry();
      }
      GlobalVector shitGMom = surf->toGlobal(shitLMom);
      GlobalPoint shitGPos = surf->toGlobal(shitLPos);

      GlobalVector tsosGMom = state.globalMomentum();
      GlobalError  tsosGMEr(state.cartesianError().matrix().Sub<AlgebraicSymMatrix33>(3,3));
      GlobalPoint  tsosGPos = state.globalPosition();
      GlobalError  tsosGPEr = state.cartesianError().position();

      GlobalPoint rhitGPos = (rhit)->globalPosition();
      GlobalError rhitGPEr = (rhit)->globalPositionError();

      LogVerbatim("TestTrackHits") << "assSimHits.size()=" << assSimHits.size() ;
      LogVerbatim("TestTrackHits") << "tsos globalPos   =" << tsosGPos ;
      LogVerbatim("TestTrackHits") << "sim hit globalPos=" << shitGPos ;
      LogVerbatim("TestTrackHits") << "rec hit globalPos=" << rhitGPos ;
      LogVerbatim("TestTrackHits") << "geographicalId   =" << rhit->det()->geographicalId().rawId() ;
      LogVerbatim("TestTrackHits") << "surface position =" << surf->position() ;

# if 0
      if (rhit->detUnit()) LogTrace("TestTrackHits") << "rhit->detUnit()->geographicalId()=" 
                                                     << rhit->detUnit()->geographicalId().rawId() ;
      LogTrace("TestTrackHits") << "rhit->det()->surface().position()=" 
                                << rhit->det()->surface().position() ;
      if (rhit->detUnit()) LogTrace("TestTrackHits") << "rhit->detUnit()->surface().position()="  
                                                     << rhit->detUnit()->surface().position() ;
      LogTrace("TestTrackHits") << "rhit->det()->position()=" << rhit->det()->position() ;
      if (rhit->detUnit()) LogTrace("TestTrackHits") << "rhit->detUnit()->position()="  
                                                     << rhit->detUnit()->position() ;
      LogTrace("TestTrackHits") << "rhit->det()->surface().bounds().length()=" 
                                << rhit->det()->surface().bounds().length() ;
      if (rhit->detUnit()) LogTrace("TestTrackHits") << "rhit->detUnit()->surface().bounds().length()="  
                                                     << rhit->detUnit()->surface().bounds().length() ;
      LogTrace("TestTrackHits") << "rhit->det()->surface().bounds().width()=" 
                                << rhit->det()->surface().bounds().width() ;
      if (rhit->detUnit()) LogTrace("TestTrackHits") << "rhit->detUnit()->surface().bounds().width()="  
                                                     << rhit->detUnit()->surface().bounds().width() ;
      LogTrace("TestTrackHits") << "rhit->det()->surface().bounds().thickness()=" 
                                << rhit->det()->surface().bounds().thickness() ;
      if (rhit->detUnit()) LogTrace("TestTrackHits") << "rhit->detUnit()->surface().bounds().thickness()="  
                                                     << rhit->detUnit()->surface().bounds().thickness() ;
#endif      

      double pullGPX_rs = (rhitGPos.x()-shitGPos.x())/sqrt(rhitGPEr.cxx());
      double pullGPY_rs = (rhitGPos.y()-shitGPos.y())/sqrt(rhitGPEr.cyy());
      double pullGPZ_rs = (rhitGPos.z()-shitGPos.z())/sqrt(rhitGPEr.czz());
      //double pullGPX_rs = (rhitGPos.x()-shitGPos.x());
      //double pullGPY_rs = (rhitGPos.y()-shitGPos.y());
      //double pullGPZ_rs = (rhitGPos.z()-shitGPos.z());

      LogTrace("TestTrackHits") << "rs" ;

      title.str("");
      title << "PullGP_X_" << subdetId << "-" << layerId << "_rs";
      hPullGP_X_rs[title.str()]->Fill( pullGPX_rs );
      title.str("");
      title << "PullGP_Y_" << subdetId << "-" << layerId << "_rs";
      hPullGP_Y_rs[title.str()]->Fill( pullGPY_rs );
      title.str("");
      title << "PullGP_Z_" << subdetId << "-" << layerId << "_rs";
      hPullGP_Z_rs[title.str()]->Fill( pullGPZ_rs );

      double pullGPX_tr = (tsosGPos.x()-rhitGPos.x())/sqrt(tsosGPEr.cxx()+rhitGPEr.cxx());
      double pullGPY_tr = (tsosGPos.y()-rhitGPos.y())/sqrt(tsosGPEr.cyy()+rhitGPEr.cyy());
      double pullGPZ_tr = (tsosGPos.z()-rhitGPos.z())/sqrt(tsosGPEr.czz()+rhitGPEr.czz());
      //double pullGPX_tr = (tsosGPos.x()-rhitGPos.x());
      //double pullGPY_tr = (tsosGPos.y()-rhitGPos.y());
      //double pullGPZ_tr = (tsosGPos.z()-rhitGPos.z());

      LogTrace("TestTrackHits") << "tr" ;

      title.str("");
      title << "PullGP_X_" << subdetId << "-" << layerId << "_tr";
      hPullGP_X_tr[title.str()]->Fill( pullGPX_tr );
      title.str("");
      title << "PullGP_Y_" << subdetId << "-" << layerId << "_tr";
      hPullGP_Y_tr[title.str()]->Fill( pullGPY_tr );
      title.str("");
      title << "PullGP_Z_" << subdetId << "-" << layerId << "_tr";
      hPullGP_Z_tr[title.str()]->Fill( pullGPZ_tr );

      double pullGPX_ts = (tsosGPos.x()-shitGPos.x())/sqrt(tsosGPEr.cxx());
      double pullGPY_ts = (tsosGPos.y()-shitGPos.y())/sqrt(tsosGPEr.cyy());
      double pullGPZ_ts = (tsosGPos.z()-shitGPos.z())/sqrt(tsosGPEr.czz());
      //double pullGPX_ts = (tsosGPos.x()-shitGPos.x());
      //double pullGPY_ts = (tsosGPos.y()-shitGPos.y());
      //double pullGPZ_ts = (tsosGPos.z()-shitGPos.z());

      LogTrace("TestTrackHits") << "ts1" ;

      title.str("");
      title << "PullGP_X_" << subdetId << "-" << layerId << "_ts";
      hPullGP_X_ts[title.str()]->Fill( pullGPX_ts );
      title.str("");
      title << "PullGP_Y_" << subdetId << "-" << layerId << "_ts";
      hPullGP_Y_ts[title.str()]->Fill( pullGPY_ts );
      title.str("");
      title << "PullGP_Z_" << subdetId << "-" << layerId << "_ts";
      hPullGP_Z_ts[title.str()]->Fill( pullGPZ_ts );

      double pullGMX_ts = (tsosGMom.x()-shitGMom.x())/sqrt(tsosGMEr.cxx());
      double pullGMY_ts = (tsosGMom.y()-shitGMom.y())/sqrt(tsosGMEr.cyy());
      double pullGMZ_ts = (tsosGMom.z()-shitGMom.z())/sqrt(tsosGMEr.czz());
      //double pullGMX_ts = (tsosGMom.x()-shitGMom.x());
      //double pullGMY_ts = (tsosGMom.y()-shitGMom.y());
      //double pullGMZ_ts = (tsosGMom.z()-shitGMom.z());

      LogTrace("TestTrackHits") << "ts2" ;

      title.str("");
      title << "PullGM_X_" << subdetId << "-" << layerId << "_ts";
      hPullGM_X_ts[title.str()]->Fill( pullGMX_ts );
      title.str("");
      title << "PullGM_Y_" << subdetId << "-" << layerId << "_ts";
      hPullGM_Y_ts[title.str()]->Fill( pullGMY_ts );
      title.str("");
      title << "PullGM_Z_" << subdetId << "-" << layerId << "_ts";
      hPullGM_Z_ts[title.str()]->Fill( pullGMZ_ts );
      if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
        Propagator* thePropagatorAnyDir = new PropagatorWithMaterial(anyDirection,0.105,theMF.product(),1.6);
        //mono
        LogTrace("TestTrackHits") << "MONO HIT" ;
        auto m = dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())->monoHit();
        CTTRHp tMonoHit = theBuilder->build(&m);
        if (tMonoHit==0) continue;
        vector<PSimHit> assMonoSimHits = hitAssociator->associateHit(*tMonoHit->hit());
        if (assMonoSimHits.size()==0) continue;
        const PSimHit sMonoHit = *(assMonoSimHits.begin());
        const Surface * monoSurf = &( tMonoHit->det()->surface() );
        if (monoSurf==0) continue;
        TSOS monoState = thePropagatorAnyDir->propagate(state,*monoSurf);
        if (monoState.isValid()==0) continue;

        LocalVector monoShitLMom = sMonoHit.momentumAtEntry();
        GlobalVector monoShitGMom = monoSurf->toGlobal(monoShitLMom);
        LocalPoint monoShitLPos = sMonoHit.localPosition();
        GlobalPoint monoShitGPos = monoSurf->toGlobal(monoShitLPos);

        //LogTrace("TestTrackHits") << "assMonoSimHits.size()=" << assMonoSimHits.size() ;
        //LogTrace("TestTrackHits") << "mono shit=" << monoShitGPos ;

        GlobalVector monoTsosGMom = monoState.globalMomentum();
        GlobalError  monoTsosGMEr(monoState.cartesianError().matrix().Sub<AlgebraicSymMatrix33>(3,3));
        GlobalPoint  monoTsosGPos = monoState.globalPosition();
        GlobalError  monoTsosGPEr = monoState.cartesianError().position();

        GlobalPoint monoRhitGPos = tMonoHit->globalPosition();
        GlobalError monoRhitGPEr = tMonoHit->globalPositionError();

        double pullGPX_rs_mono = (monoRhitGPos.x()-monoShitGPos.x())/sqrt(monoRhitGPEr.cxx());
        double pullGPY_rs_mono = (monoRhitGPos.y()-monoShitGPos.y())/sqrt(monoRhitGPEr.cyy());
        double pullGPZ_rs_mono = (monoRhitGPos.z()-monoShitGPos.z())/sqrt(monoRhitGPEr.czz());
        //double pullGPX_rs_mono = (monoRhitGPos.x()-monoShitGPos.x());
        //double pullGPY_rs_mono = (monoRhitGPos.y()-monoShitGPos.y());
        //double pullGPZ_rs_mono = (monoRhitGPos.z()-monoShitGPos.z());

        MeasurementExtractor meMo(monoState);
        double chi2mono = computeChi2Increment(meMo,tMonoHit);

        title.str("");
        title << "Chi2Increment_mono_" << subdetId << "-" << layerId ;
        hChi2Increment_mono[title.str()]->Fill(chi2mono);

        title.str("");
        title << "PullGP_X_" << subdetId << "-" << layerId << "_rs_mono";
        hPullGP_X_rs_mono[title.str()]->Fill( pullGPX_rs_mono );
        title.str("");
        title << "PullGP_Y_" << subdetId << "-" << layerId << "_rs_mono";
        hPullGP_Y_rs_mono[title.str()]->Fill( pullGPY_rs_mono );
        title.str("");
        title << "PullGP_Z_" << subdetId << "-" << layerId << "_rs_mono";
        hPullGP_Z_rs_mono[title.str()]->Fill( pullGPZ_rs_mono );

        double pullGPX_tr_mono = (monoTsosGPos.x()-monoRhitGPos.x())/sqrt(monoTsosGPEr.cxx()+monoRhitGPEr.cxx());
        double pullGPY_tr_mono = (monoTsosGPos.y()-monoRhitGPos.y())/sqrt(monoTsosGPEr.cyy()+monoRhitGPEr.cyy());
        double pullGPZ_tr_mono = (monoTsosGPos.z()-monoRhitGPos.z())/sqrt(monoTsosGPEr.czz()+monoRhitGPEr.czz());
        //double pullGPX_tr_mono = (monoTsosGPos.x()-monoRhitGPos.x());
        //double pullGPY_tr_mono = (monoTsosGPos.y()-monoRhitGPos.y());
        //double pullGPZ_tr_mono = (monoTsosGPos.z()-monoRhitGPos.z());

        title.str("");
        title << "PullGP_X_" << subdetId << "-" << layerId << "_tr_mono";
        hPullGP_X_tr_mono[title.str()]->Fill( pullGPX_tr_mono );
        title.str("");
        title << "PullGP_Y_" << subdetId << "-" << layerId << "_tr_mono";
        hPullGP_Y_tr_mono[title.str()]->Fill( pullGPY_tr_mono );
        title.str("");
        title << "PullGP_Z_" << subdetId << "-" << layerId << "_tr_mono";
        hPullGP_Z_tr_mono[title.str()]->Fill( pullGPZ_tr_mono );

        double pullGPX_ts_mono = (monoTsosGPos.x()-monoShitGPos.x())/sqrt(monoTsosGPEr.cxx());
        double pullGPY_ts_mono = (monoTsosGPos.y()-monoShitGPos.y())/sqrt(monoTsosGPEr.cyy());
        double pullGPZ_ts_mono = (monoTsosGPos.z()-monoShitGPos.z())/sqrt(monoTsosGPEr.czz());
        //double pullGPX_ts_mono = (monoTsosGPos.x()-monoShitGPos.x());
        //double pullGPY_ts_mono = (monoTsosGPos.y()-monoShitGPos.y());
        //double pullGPZ_ts_mono = (monoTsosGPos.z()-monoShitGPos.z());

        title.str("");
        title << "PullGP_X_" << subdetId << "-" << layerId << "_ts_mono";
        hPullGP_X_ts_mono[title.str()]->Fill( pullGPX_ts_mono );
        title.str("");
        title << "PullGP_Y_" << subdetId << "-" << layerId << "_ts_mono";
        hPullGP_Y_ts_mono[title.str()]->Fill( pullGPY_ts_mono );
        title.str("");
        title << "PullGP_Z_" << subdetId << "-" << layerId << "_ts_mono";
        hPullGP_Z_ts_mono[title.str()]->Fill( pullGPZ_ts_mono );

        double pullGMX_ts_mono = (monoTsosGMom.x()-monoShitGMom.x())/sqrt(monoTsosGMEr.cxx());
        double pullGMY_ts_mono = (monoTsosGMom.y()-monoShitGMom.y())/sqrt(monoTsosGMEr.cyy());
        double pullGMZ_ts_mono = (monoTsosGMom.z()-monoShitGMom.z())/sqrt(monoTsosGMEr.czz());
        //double pullGMX_ts_mono = (monoTsosGMom.x()-monoShitGMom.x());
        //double pullGMY_ts_mono = (monoTsosGMom.y()-monoShitGMom.y());
        //double pullGMZ_ts_mono = (monoTsosGMom.z()-monoShitGMom.z());

        title.str("");
        title << "PullGM_X_" << subdetId << "-" << layerId << "_ts_mono";
        hPullGM_X_ts_mono[title.str()]->Fill( pullGMX_ts_mono );
        title.str("");
        title << "PullGM_Y_" << subdetId << "-" << layerId << "_ts_mono";
        hPullGM_Y_ts_mono[title.str()]->Fill( pullGMY_ts_mono );
        title.str("");
        title << "PullGM_Z_" << subdetId << "-" << layerId << "_ts_mono";
        hPullGM_Z_ts_mono[title.str()]->Fill( pullGMZ_ts_mono );

        //stereo
        LogTrace("TestTrackHits") << "STEREO HIT" ;
        auto s = dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())->stereoHit();
        CTTRHp tStereoHit = theBuilder->build(&s);
        if (tStereoHit==0) continue;
        vector<PSimHit> assStereoSimHits = hitAssociator->associateHit(*tStereoHit->hit());
        if (assStereoSimHits.size()==0) continue;
        const PSimHit sStereoHit = *(assStereoSimHits.begin());
        const Surface * stereoSurf = &( tStereoHit->det()->surface() );
        if (stereoSurf==0) continue;
        TSOS stereoState = thePropagatorAnyDir->propagate(state,*stereoSurf);
        if (stereoState.isValid()==0) continue;

        LocalVector stereoShitLMom = sStereoHit.momentumAtEntry();
        GlobalVector stereoShitGMom = stereoSurf->toGlobal(stereoShitLMom);
        LocalPoint stereoShitLPos = sStereoHit.localPosition();
        GlobalPoint stereoShitGPos = stereoSurf->toGlobal(stereoShitLPos);

        //LogTrace("TestTrackHits") << "assStereoSimHits.size()=" << assStereoSimHits.size() ;
        //LogTrace("TestTrackHits") << "stereo shit=" << stereoShitGPos ;

        GlobalVector stereoTsosGMom = stereoState.globalMomentum();
        GlobalError  stereoTsosGMEr(stereoState.cartesianError().matrix().Sub<AlgebraicSymMatrix33>(3,3));
        GlobalPoint  stereoTsosGPos = stereoState.globalPosition();
        GlobalError  stereoTsosGPEr = stereoState.cartesianError().position();

        GlobalPoint stereoRhitGPos = tStereoHit->globalPosition();
        GlobalError stereoRhitGPEr = tStereoHit->globalPositionError();

        MeasurementExtractor meSt(stereoState);
        double chi2stereo = computeChi2Increment(meSt,tStereoHit);

        title.str("");
        title << "Chi2Increment_stereo_" << subdetId << "-" << layerId ;
        hChi2Increment_stereo[title.str()]->Fill(chi2stereo);

        double pullGPX_rs_stereo = (stereoRhitGPos.x()-stereoShitGPos.x())/sqrt(stereoRhitGPEr.cxx());
        double pullGPY_rs_stereo = (stereoRhitGPos.y()-stereoShitGPos.y())/sqrt(stereoRhitGPEr.cyy());
        double pullGPZ_rs_stereo = (stereoRhitGPos.z()-stereoShitGPos.z())/sqrt(stereoRhitGPEr.czz());
        //      double pullGPX_rs_stereo = (stereoRhitGPos.x()-stereoShitGPos.x())/*/sqrt(stereoRhitGPEr.cxx())*/;
        //      double pullGPY_rs_stereo = (stereoRhitGPos.y()-stereoShitGPos.y())/*/sqrt(stereoRhitGPEr.cyy())*/;
        //      double pullGPZ_rs_stereo = (stereoRhitGPos.z()-stereoShitGPos.z())/*/sqrt(stereoRhitGPEr.czz())*/;

        title.str("");
        title << "PullGP_X_" << subdetId << "-" << layerId << "_rs_stereo";
        hPullGP_X_rs_stereo[title.str()]->Fill( pullGPX_rs_stereo );
        title.str("");
        title << "PullGP_Y_" << subdetId << "-" << layerId << "_rs_stereo";
        hPullGP_Y_rs_stereo[title.str()]->Fill( pullGPY_rs_stereo );
        title.str("");
        title << "PullGP_Z_" << subdetId << "-" << layerId << "_rs_stereo";
        hPullGP_Z_rs_stereo[title.str()]->Fill( pullGPZ_rs_stereo );

        double pullGPX_tr_stereo = (stereoTsosGPos.x()-stereoRhitGPos.x())/sqrt(stereoTsosGPEr.cxx()+stereoRhitGPEr.cxx());
        double pullGPY_tr_stereo = (stereoTsosGPos.y()-stereoRhitGPos.y())/sqrt(stereoTsosGPEr.cyy()+stereoRhitGPEr.cyy());
        double pullGPZ_tr_stereo = (stereoTsosGPos.z()-stereoRhitGPos.z())/sqrt(stereoTsosGPEr.czz()+stereoRhitGPEr.czz());
        //double pullGPX_tr_stereo = (stereoTsosGPos.x()-stereoRhitGPos.x());
        //double pullGPY_tr_stereo = (stereoTsosGPos.y()-stereoRhitGPos.y());
        //double pullGPZ_tr_stereo = (stereoTsosGPos.z()-stereoRhitGPos.z());

        title.str("");
        title << "PullGP_X_" << subdetId << "-" << layerId << "_tr_stereo";
        hPullGP_X_tr_stereo[title.str()]->Fill( pullGPX_tr_stereo );
        title.str("");
        title << "PullGP_Y_" << subdetId << "-" << layerId << "_tr_stereo";
        hPullGP_Y_tr_stereo[title.str()]->Fill( pullGPY_tr_stereo );
        title.str("");
        title << "PullGP_Z_" << subdetId << "-" << layerId << "_tr_stereo";
        hPullGP_Z_tr_stereo[title.str()]->Fill( pullGPZ_tr_stereo );

        double pullGPX_ts_stereo = (stereoTsosGPos.x()-stereoShitGPos.x())/sqrt(stereoTsosGPEr.cxx());
        double pullGPY_ts_stereo = (stereoTsosGPos.y()-stereoShitGPos.y())/sqrt(stereoTsosGPEr.cyy());
        double pullGPZ_ts_stereo = (stereoTsosGPos.z()-stereoShitGPos.z())/sqrt(stereoTsosGPEr.czz());
        //double pullGPX_ts_stereo = (stereoTsosGPos.x()-stereoShitGPos.x());
        //double pullGPY_ts_stereo = (stereoTsosGPos.y()-stereoShitGPos.y());
        //double pullGPZ_ts_stereo = (stereoTsosGPos.z()-stereoShitGPos.z());

        title.str("");
        title << "PullGP_X_" << subdetId << "-" << layerId << "_ts_stereo";
        hPullGP_X_ts_stereo[title.str()]->Fill( pullGPX_ts_stereo );
        title.str("");
        title << "PullGP_Y_" << subdetId << "-" << layerId << "_ts_stereo";
        hPullGP_Y_ts_stereo[title.str()]->Fill( pullGPY_ts_stereo );
        title.str("");
        title << "PullGP_Z_" << subdetId << "-" << layerId << "_ts_stereo";
        hPullGP_Z_ts_stereo[title.str()]->Fill( pullGPZ_ts_stereo );

        double pullGMX_ts_stereo = (stereoTsosGMom.x()-stereoShitGMom.x())/sqrt(stereoTsosGMEr.cxx());
        double pullGMY_ts_stereo = (stereoTsosGMom.y()-stereoShitGMom.y())/sqrt(stereoTsosGMEr.cyy());
        double pullGMZ_ts_stereo = (stereoTsosGMom.z()-stereoShitGMom.z())/sqrt(stereoTsosGMEr.czz());
        //double pullGMX_ts_stereo = (stereoTsosGMom.x()-stereoShitGMom.x());
        //double pullGMY_ts_stereo = (stereoTsosGMom.y()-stereoShitGMom.y());
        //double pullGMZ_ts_stereo = (stereoTsosGMom.z()-stereoShitGMom.z());

        title.str("");
        title << "PullGM_X_" << subdetId << "-" << layerId << "_ts_stereo";
        hPullGM_X_ts_stereo[title.str()]->Fill( pullGMX_ts_stereo );
        title.str("");
        title << "PullGM_Y_" << subdetId << "-" << layerId << "_ts_stereo";
        hPullGM_Y_ts_stereo[title.str()]->Fill( pullGMY_ts_stereo );
        title.str("");
        title << "PullGM_Z_" << subdetId << "-" << layerId << "_ts_stereo";
        hPullGM_Z_ts_stereo[title.str()]->Fill( pullGMZ_ts_stereo );
      }
    }
    LogTrace("TestTrackHits") << "traj chi2="  << tchi2 ;
    LogTrace("TestTrackHits") << "track chi2=" << track->chi2() ;
    i++;
  }
  LogTrace("TestTrackHits") << "end of event: processd hits=" << evtHits ;
  delete hitAssociator;
}
void TestTrackHits::beginRun ( edm::Run run,
const edm::EventSetup iSetup 
) [private, virtual]

Definition at line 44 of file TestTrackHits.cc.

References builderName, energyLossRatio, file, edm::EventSetup::get(), goodbadmerged, hChi2BadHit, hChi2DeltaHit, hChi2GoodHit, hChi2Increment, hChi2Increment_mono, hChi2Increment_stereo, hChi2IncrementVsEta, hChi2NSharedHit, hChi2SharedHit, hClsize_vs_Chi2, hClusterSize, hGoodHit_vs_Chi2, hPixClsize_vs_Chi2, hPixClusterSize, hPixSimHitVecSize, hPrjClsize_vs_Chi2, hPrjClusterSize, hPrjSimHitVecSize, 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, hSimHitVecSize, hSt1Clsize_vs_Chi2, hSt1ClusterSize, hSt1SimHitVecSize, hSt2Clsize_vs_Chi2, hSt2ClusterSize, hSt2SimHitVecSize, hTotChi2BadHit, hTotChi2DeltaHit, hTotChi2GoodHit, hTotChi2Increment, hTotChi2NSharedHit, hTotChi2SharedHit, i, j, mergedPull, out, probXbad, probXdelta, probXgood, probXnoshare, probXshared, probYbad, probYdelta, probYgood, probYnoshare, probYshared, propagatorName, theBuilder, theG, theMF, thePropagator, theUpdator, title, trackAssociator, and updatorName.

{
  iSetup.get<TrackerDigiGeometryRecord>().get(theG);
  iSetup.get<IdealMagneticFieldRecord>().get(theMF);  
  iSetup.get<TrackingComponentsRecord>().get(propagatorName,thePropagator);
  iSetup.get<TransientRecHitRecord>().get(builderName,theBuilder);
  iSetup.get<TrackingComponentsRecord>().get(updatorName,theUpdator);
  iSetup.get<TrackAssociatorRecord>().get("TrackAssociatorByHits",trackAssociator);

  file = new TFile(out.c_str(),"recreate");
  for (int i=0; i!=6; i++)
    for (int j=0; j!=9; j++){
      if (i==0 && j>2) break;
      if (i==1 && j>1) break;
      if (i==2 && j>3) break;
      if (i==3 && j>2) break;
      if (i==4 && j>5) break;
      if (i==5 && j>8) break;

      title.str("");
      title << "Chi2Increment_" << i+1 << "-" << j+1 ;
      hChi2Increment[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);
      title.str("");
      title << "Chi2IncrementVsEta_" << i+1 << "-" << j+1 ;
      hChi2IncrementVsEta[title.str()] = new TH2F(title.str().c_str(),title.str().c_str(),50,-2.5,2.5,1000,0,100);
      title.str("");
      title << "Chi2GoodHit_" << i+1 << "-" << j+1 ;
      hChi2GoodHit[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);
      title.str("");
      title << "Chi2BadHit_" << i+1 << "-" << j+1 ;
      hChi2BadHit[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);
      title.str("");
      title << "Chi2DeltaHit_" << i+1 << "-" << j+1 ;
      hChi2DeltaHit[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);
      title.str("");
      title << "Chi2NSharedHit_" << i+1 << "-" << j+1 ;
      hChi2NSharedHit[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);
      title.str("");
      title << "Chi2SharedHit_" << i+1 << "-" << j+1 ;
      hChi2SharedHit[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);

      title.str("");
      title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts";
      hPullGP_X_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts";
      hPullGP_Y_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts";
      hPullGP_Z_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

      title.str("");
      title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts";
      hPullGM_X_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts";
      hPullGM_Y_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts";
      hPullGM_Z_ts[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

      title.str("");
      title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr";
      hPullGP_X_tr[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr";
      hPullGP_Y_tr[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr";
      hPullGP_Z_tr[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

      title.str("");
      title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs";
      hPullGP_X_rs[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs";
      hPullGP_Y_rs[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      title.str("");
      title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs";
      hPullGP_Z_rs[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

      if ( ((i==2||i==4)&&(j==0||j==1)) || (i==3||i==5) ){
        //mono
        title.str("");
        title << "Chi2Increment_mono_" << i+1 << "-" << j+1 ;
        hChi2Increment_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);

        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGP_X_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGP_Y_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGP_Z_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        title.str("");
        title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGM_X_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGM_Y_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGM_Z_ts_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_mono";
        hPullGP_X_tr_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_mono";
        hPullGP_Y_tr_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_mono";
        hPullGP_Z_tr_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_mono";
        hPullGP_X_rs_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_mono";
        hPullGP_Y_rs_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_mono";
        hPullGP_Z_rs_mono[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        //stereo
        title.str("");
        title << "Chi2Increment_stereo_" << i+1 << "-" << j+1 ;
        hChi2Increment_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,0,100);

        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGP_X_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGP_Y_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGP_Z_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        title.str("");
        title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGM_X_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGM_Y_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGM_Z_ts_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_stereo";
        hPullGP_X_tr_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_stereo";
        hPullGP_Y_tr_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_stereo";
        hPullGP_Z_tr_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);

        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_stereo";
        hPullGP_X_rs_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_stereo";
        hPullGP_Y_rs_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_stereo";
        hPullGP_Z_rs_stereo[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
      }
    }
  hTotChi2Increment = new TH1F("TotChi2Increment","TotChi2Increment",1000,0,100);
  hTotChi2GoodHit = new TH1F("TotChi2GoodHit","TotChi2GoodHit",1000,0,100);
  hTotChi2BadHit = new TH1F("TotChi2BadHit","TotChi2BadHit",1000,0,100);
  hTotChi2DeltaHit = new TH1F("TotChi2DeltaHit","TotChi2DeltaHit",1000,0,100);
  hTotChi2NSharedHit = new TH1F("TotChi2NSharedHit","TotChi2NSharedHit",1000,0,100);
  hTotChi2SharedHit = new TH1F("TotChi2SharedHit","TotChi2SharedHit",1000,0,100);
  hProcess_vs_Chi2  = new TH2F("Process_vs_Chi2","Process_vs_Chi2",1000,0,100,17,-0.5,16.5);  
  hClsize_vs_Chi2   = new TH2F("Clsize_vs_Chi2","Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
  hPixClsize_vs_Chi2= new TH2F("PixClsize_vs_Chi2","PixClsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
  hPrjClsize_vs_Chi2= new TH2F("PrjClsize_vs_Chi2","PrjClsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
  hSt1Clsize_vs_Chi2= new TH2F("St1Clsize_vs_Chi2","St1Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
  hSt2Clsize_vs_Chi2= new TH2F("St2Clsize_vs_Chi2","St2Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
  hGoodHit_vs_Chi2  = new TH2F("GoodHit_vs_Chi2","GoodHit_vs_Chi2",10000,0,1000,2,-0.5,1.5);
  hClusterSize = new TH1F("ClusterSize","ClusterSize",40,-0.5,39.5);
  hPixClusterSize = new TH1F("PixClusterSize","PixClusterSize",40,-0.5,39.5);
  hPrjClusterSize = new TH1F("PrjClusterSize","PrjClusterSize",40,-0.5,39.5);
  hSt1ClusterSize = new TH1F("St1ClusterSize","St1ClusterSize",40,-0.5,39.5);
  hSt2ClusterSize = new TH1F("St2ClusterSize","St2ClusterSize",40,-0.5,39.5);
  hSimHitVecSize = new TH1F("hSimHitVecSize","hSimHitVecSize",40,-0.5,39.5);
  hPixSimHitVecSize = new TH1F("PixSimHitVecSize","PixSimHitVecSize",40,-0.5,39.5);
  hPrjSimHitVecSize = new TH1F("PrjSimHitVecSize","PrjSimHitVecSize",40,-0.5,39.5);
  hSt1SimHitVecSize = new TH1F("St1SimHitVecSize","St1SimHitVecSize",40,-0.5,39.5);
  hSt2SimHitVecSize = new TH1F("St2SimHitVecSize","St2SimHitVecSize",40,-0.5,39.5);
  goodbadmerged = new TH1F("goodbadmerged","goodbadmerged",5,0.5,5.5);
  energyLossRatio = new TH1F("energyLossRatio","energyLossRatio",100,0,1);
  mergedPull = new TH1F("mergedPull","mergedPull",200,0,20);
  probXgood = new TH1F("probXgood","probXgood",110,0,1.1);
  probXbad = new TH1F("probXbad","probXbad",110,0,1.1);
  probXdelta = new TH1F("probXdelta","probXdelta",110,0,1.1);
  probXshared = new TH1F("probXshared","probXshared",110,0,1.1);
  probXnoshare = new TH1F("probXnoshare","probXnoshare",110,0,1.1);
  probYgood = new TH1F("probYgood","probYgood",110,0,1.1);
  probYbad = new TH1F("probYbad","probYbad",110,0,1.1);
  probYdelta = new TH1F("probYdelta","probYdelta",110,0,1.1);
  probYshared = new TH1F("probYshared","probYshared",110,0,1.1);
  probYnoshare = new TH1F("probYnoshare","probYnoshare",110,0,1.1);
}
template<unsigned int D>
double TestTrackHits::computeChi2Increment ( MeasurementExtractor  me,
TransientTrackingRecHit::ConstRecHitPointer  rhit 
) [private]

Definition at line 1277 of file TestTrackHits.cc.

References funct::D, MeasurementExtractor::measuredError(), MeasurementExtractor::measuredParameters(), dttmaxenums::R, and alignCSCRings::r.

Referenced by analyze().

                                                                                           {
  typedef typename AlgebraicROOTObject<D>::Vector VecD;
  typedef typename AlgebraicROOTObject<D,D>::SymMatrix SMatDD;
  VecD r = asSVector<D>(rhit->parameters()) - me.measuredParameters<D>(*rhit);
  
  SMatDD R = asSMatrix<D>(rhit->parametersError()) + me.measuredError<D>(*rhit);
  R.Invert();
  return ROOT::Math::Similarity(r,R) ;
}
double TestTrackHits::computeChi2Increment ( MeasurementExtractor  me,
TransientTrackingRecHit::ConstRecHitPointer  hit 
) [inline, private]

Definition at line 69 of file TestTrackHits.h.

References Exception.

                                                                                                      {
    switch (hit->dimension()) {
    case 1: return computeChi2Increment<1>(me,hit);
    case 2: return computeChi2Increment<2>(me,hit);
    case 3: return computeChi2Increment<3>(me,hit);
    case 4: return computeChi2Increment<4>(me,hit);
    case 5: return computeChi2Increment<5>(me,hit);
    }
    throw cms::Exception("CkfDebugger error: rechit of dimension not 1,2,3,4,5");
  }
void TestTrackHits::endJob ( void  ) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 949 of file TestTrackHits.cc.

References energyLossRatio, file, goodbadmerged, hChi2BadHit, hChi2DeltaHit, hChi2GoodHit, hChi2Increment, hChi2Increment_mono, hChi2Increment_stereo, hChi2IncrementVsEta, hChi2NSharedHit, hChi2SharedHit, hClsize_vs_Chi2, hClusterSize, hGoodHit_vs_Chi2, hPixClsize_vs_Chi2, hPixClusterSize, hPixSimHitVecSize, hPrjClsize_vs_Chi2, hPrjClusterSize, hPrjSimHitVecSize, 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, hSimHitVecSize, hSt1Clsize_vs_Chi2, hSt1ClusterSize, hSt1SimHitVecSize, hSt2Clsize_vs_Chi2, hSt2ClusterSize, hSt2SimHitVecSize, hTotChi2BadHit, hTotChi2DeltaHit, hTotChi2GoodHit, hTotChi2Increment, hTotChi2NSharedHit, hTotChi2SharedHit, i, j, mergedPull, probXbad, probXdelta, probXgood, probXnoshare, probXshared, probYbad, probYdelta, probYgood, probYnoshare, probYshared, and title.

                           {
  //file->Write();
  TDirectory * chi2d = file->mkdir("Chi2Increment");

  TDirectory * gp_ts = file->mkdir("GP_TSOS-SimHit");
  TDirectory * gm_ts = file->mkdir("GM_TSOS-SimHit");
  TDirectory * gp_tr = file->mkdir("GP_TSOS-RecHit");
  TDirectory * gp_rs = file->mkdir("GP_RecHit-SimHit");

  TDirectory * gp_tsx = gp_ts->mkdir("X");
  TDirectory * gp_tsy = gp_ts->mkdir("Y");
  TDirectory * gp_tsz = gp_ts->mkdir("Z");
  TDirectory * gm_tsx = gm_ts->mkdir("X");
  TDirectory * gm_tsy = gm_ts->mkdir("Y");
  TDirectory * gm_tsz = gm_ts->mkdir("Z");
  TDirectory * gp_trx = gp_tr->mkdir("X");
  TDirectory * gp_try = gp_tr->mkdir("Y");
  TDirectory * gp_trz = gp_tr->mkdir("Z");
  TDirectory * gp_rsx = gp_rs->mkdir("X");
  TDirectory * gp_rsy = gp_rs->mkdir("Y");
  TDirectory * gp_rsz = gp_rs->mkdir("Z");

  TDirectory * gp_tsx_mono = gp_ts->mkdir("MONOX");
  TDirectory * gp_tsy_mono = gp_ts->mkdir("MONOY");
  TDirectory * gp_tsz_mono = gp_ts->mkdir("MONOZ");
  TDirectory * gm_tsx_mono = gm_ts->mkdir("MONOX");
  TDirectory * gm_tsy_mono = gm_ts->mkdir("MONOY");
  TDirectory * gm_tsz_mono = gm_ts->mkdir("MONOZ");
  TDirectory * gp_trx_mono = gp_tr->mkdir("MONOX");
  TDirectory * gp_try_mono = gp_tr->mkdir("MONOY");
  TDirectory * gp_trz_mono = gp_tr->mkdir("MONOZ");
  TDirectory * gp_rsx_mono = gp_rs->mkdir("MONOX");
  TDirectory * gp_rsy_mono = gp_rs->mkdir("MONOY");
  TDirectory * gp_rsz_mono = gp_rs->mkdir("MONOZ");

  TDirectory * gp_tsx_stereo = gp_ts->mkdir("STEREOX");
  TDirectory * gp_tsy_stereo = gp_ts->mkdir("STEREOY");
  TDirectory * gp_tsz_stereo = gp_ts->mkdir("STEREOZ");
  TDirectory * gm_tsx_stereo = gm_ts->mkdir("STEREOX");
  TDirectory * gm_tsy_stereo = gm_ts->mkdir("STEREOY");
  TDirectory * gm_tsz_stereo = gm_ts->mkdir("STEREOZ");
  TDirectory * gp_trx_stereo = gp_tr->mkdir("STEREOX");
  TDirectory * gp_try_stereo = gp_tr->mkdir("STEREOY");
  TDirectory * gp_trz_stereo = gp_tr->mkdir("STEREOZ");
  TDirectory * gp_rsx_stereo = gp_rs->mkdir("STEREOX");
  TDirectory * gp_rsy_stereo = gp_rs->mkdir("STEREOY");
  TDirectory * gp_rsz_stereo = gp_rs->mkdir("STEREOZ");

  chi2d->cd();
  hTotChi2Increment->Write();
  hTotChi2GoodHit->Write();
  hTotChi2BadHit->Write();
  hTotChi2DeltaHit->Write();
  hTotChi2NSharedHit->Write();
  hTotChi2SharedHit->Write();
  hProcess_vs_Chi2->Write();
  hClsize_vs_Chi2->Write();
  hPixClsize_vs_Chi2->Write();
  hPrjClsize_vs_Chi2->Write();
  hSt1Clsize_vs_Chi2->Write();
  hSt2Clsize_vs_Chi2->Write();
  hGoodHit_vs_Chi2->Write();
  hClusterSize->Write();
  hPixClusterSize->Write();
  hPrjClusterSize->Write();
  hSt1ClusterSize->Write();
  hSt2ClusterSize->Write();
  hSimHitVecSize->Write();
  hPixSimHitVecSize->Write();
  hPrjSimHitVecSize->Write();
  hSt1SimHitVecSize->Write();
  hSt2SimHitVecSize->Write();
  goodbadmerged->Write();
  energyLossRatio->Write();
  mergedPull->Write();
  probXgood->Write();
  probXbad->Write();
  probXdelta->Write();
  probXshared->Write();
  probXnoshare->Write();
  probYgood->Write();
  probYbad->Write();
  probYdelta->Write();
  probYshared->Write();
  probYnoshare->Write();
  for (int i=0; i!=6; i++)
    for (int j=0; j!=9; j++){
      if (i==0 && j>2) break;
      if (i==1 && j>1) break;
      if (i==2 && j>3) break;
      if (i==3 && j>2) break;
      if (i==4 && j>5) break;
      if (i==5 && j>8) break;
      chi2d->cd();
      title.str("");
      title << "Chi2Increment_" << i+1 << "-" << j+1 ;
      hChi2Increment[title.str()]->Write();
      title.str("");
      title << "Chi2IncrementVsEta_" << i+1 << "-" << j+1 ;
      hChi2IncrementVsEta[title.str()]->Write();
      title.str("");
      title << "Chi2GoodHit_" << i+1 << "-" << j+1 ;
      hChi2GoodHit[title.str()]->Write();
      title.str("");
      title << "Chi2BadHit_" << i+1 << "-" << j+1 ;
      hChi2BadHit[title.str()]->Write();
      title.str("");
      title << "Chi2DeltaHit_" << i+1 << "-" << j+1 ;
      hChi2DeltaHit[title.str()]->Write();
      title.str("");
      title << "Chi2NSharedHit_" << i+1 << "-" << j+1 ;
      hChi2NSharedHit[title.str()]->Write();
      title.str("");
      title << "Chi2SharedHit_" << i+1 << "-" << j+1 ;
      hChi2SharedHit[title.str()]->Write();

      gp_ts->cd();
      gp_tsx->cd();
      title.str("");
      title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts";
      hPullGP_X_ts[title.str()]->Write();
      gp_tsy->cd();
      title.str("");
      title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts";
      hPullGP_Y_ts[title.str()]->Write();
      gp_tsz->cd();
      title.str("");
      title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts";
      hPullGP_Z_ts[title.str()]->Write();

      gm_ts->cd();
      gm_tsx->cd();
      title.str("");
      title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts";
      hPullGM_X_ts[title.str()]->Write();
      gm_tsy->cd();
      title.str("");
      title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts";
      hPullGM_Y_ts[title.str()]->Write();
      gm_tsz->cd();
      title.str("");
      title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts";
      hPullGM_Z_ts[title.str()]->Write();

      gp_tr->cd();
      gp_trx->cd();
      title.str("");
      title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr";
      hPullGP_X_tr[title.str()]->Write();
      gp_try->cd();
      title.str("");
      title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr";
      hPullGP_Y_tr[title.str()]->Write();
      gp_trz->cd();
      title.str("");
      title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr";
      hPullGP_Z_tr[title.str()]->Write();

      gp_rs->cd();
      gp_rsx->cd();
      title.str("");
      title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs";
      hPullGP_X_rs[title.str()]->Write();
      gp_rsy->cd();
      title.str("");
      title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs";
      hPullGP_Y_rs[title.str()]->Write();
      gp_rsz->cd();
      title.str("");
      title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs";
      hPullGP_Z_rs[title.str()]->Write();

      if ( ((i==2||i==4)&&(j==0||j==1)) || (i==3||i==5) ){
        chi2d->cd();
        title.str("");
        title << "Chi2Increment_mono_" << i+1 << "-" << j+1 ;
        hChi2Increment_mono[title.str()]->Write();
        title.str("");
        title << "Chi2Increment_stereo_" << i+1 << "-" << j+1 ;
        hChi2Increment_stereo[title.str()]->Write();
        //mono
        gp_ts->cd();
        gp_tsx_mono->cd();
        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGP_X_ts_mono[title.str()]->Write();
        gp_tsy_mono->cd();
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGP_Y_ts_mono[title.str()]->Write();
        gp_tsz_mono->cd();
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGP_Z_ts_mono[title.str()]->Write();

        gm_ts->cd();
        gm_tsx_mono->cd();
        title.str("");
        title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGM_X_ts_mono[title.str()]->Write();
        gm_tsy_mono->cd();
        title.str("");
        title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGM_Y_ts_mono[title.str()]->Write();
        gm_tsz_mono->cd();
        title.str("");
        title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_mono";
        hPullGM_Z_ts_mono[title.str()]->Write();

        gp_tr->cd();
        gp_trx_mono->cd();
        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_mono";
        hPullGP_X_tr_mono[title.str()]->Write();
        gp_try_mono->cd();
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_mono";
        hPullGP_Y_tr_mono[title.str()]->Write();
        gp_trz_mono->cd();
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_mono";
        hPullGP_Z_tr_mono[title.str()]->Write();

        gp_rs->cd();
        gp_rsx_mono->cd();
        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_mono";
        hPullGP_X_rs_mono[title.str()]->Write();
        gp_rsy_mono->cd();
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_mono";
        hPullGP_Y_rs_mono[title.str()]->Write();
        gp_rsz_mono->cd();
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_mono";
        hPullGP_Z_rs_mono[title.str()]->Write();

        //stereo
        gp_ts->cd();
        gp_tsx_stereo->cd();
        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGP_X_ts_stereo[title.str()]->Write();
        gp_tsy_stereo->cd();
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGP_Y_ts_stereo[title.str()]->Write();
        gp_tsz_stereo->cd();
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGP_Z_ts_stereo[title.str()]->Write();

        gm_ts->cd();
        gm_tsx_stereo->cd();
        title.str("");
        title << "PullGM_X_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGM_X_ts_stereo[title.str()]->Write();
        gm_tsy_stereo->cd();
        title.str("");
        title << "PullGM_Y_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGM_Y_ts_stereo[title.str()]->Write();
        gm_tsz_stereo->cd();
        title.str("");
        title << "PullGM_Z_" << i+1 << "-" << j+1 << "_ts_stereo";
        hPullGM_Z_ts_stereo[title.str()]->Write();

        gp_tr->cd();
        gp_trx_stereo->cd();
        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_tr_stereo";
        hPullGP_X_tr_stereo[title.str()]->Write();
        gp_try_stereo->cd();
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_tr_stereo";
        hPullGP_Y_tr_stereo[title.str()]->Write();
        gp_trz_stereo->cd();
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_tr_stereo";
        hPullGP_Z_tr_stereo[title.str()]->Write();

        gp_rs->cd();
        gp_rsx_stereo->cd();
        title.str("");
        title << "PullGP_X_" << i+1 << "-" << j+1 << "_rs_stereo";
        hPullGP_X_rs_stereo[title.str()]->Write();
        gp_rsy_stereo->cd();
        title.str("");
        title << "PullGP_Y_" << i+1 << "-" << j+1 << "_rs_stereo";
        hPullGP_Y_rs_stereo[title.str()]->Write();
        gp_rsz_stereo->cd();
        title.str("");
        title << "PullGP_Z_" << i+1 << "-" << j+1 << "_rs_stereo";
        hPullGP_Z_rs_stereo[title.str()]->Write();
      }
    }

  file->Close();
}
std::pair< LocalPoint, LocalVector > TestTrackHits::projectHit ( const PSimHit hit,
const StripGeomDetUnit stripDet,
const BoundPlane plane 
) [private]

Definition at line 1252 of file TestTrackHits.cc.

References funct::cos(), dir, PSimHit::localDirection(), PSimHit::localPosition(), pileupReCalc_HLTpaths::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().

{ 
  const StripTopology& topol = stripDet->specificTopology();
  GlobalPoint globalpos= stripDet->surface().toGlobal(hit.localPosition());
  LocalPoint localHit = plane.toLocal(globalpos);
  //track direction
  LocalVector locdir=hit.localDirection();
  //rotate track in new frame
   
  GlobalVector globaldir= stripDet->surface().toGlobal(locdir);
  LocalVector dir=plane.toLocal(globaldir);
  float scale = -localHit.z() / dir.z();
   
  LocalPoint projectedPos = localHit + scale*dir;
   
  float selfAngle = topol.stripAngle( topol.strip( hit.localPosition()));
   
  LocalVector stripDir( sin(selfAngle), cos(selfAngle), 0); // vector along strip in hit frame
   
  LocalVector localStripDir( plane.toLocal(stripDet->surface().toGlobal( stripDir)));
   
  return std::pair<LocalPoint,LocalVector>( projectedPos, localStripDir);
}

Member Data Documentation

std::string TestTrackHits::builderName [private]

Definition at line 84 of file TestTrackHits.h.

Referenced by beginRun(), and TestTrackHits().

Definition at line 80 of file TestTrackHits.h.

Referenced by TestTrackHits().

Definition at line 129 of file TestTrackHits.h.

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

TFile* TestTrackHits::file [private]

Definition at line 101 of file TestTrackHits.h.

Referenced by beginRun(), and endJob().

Definition at line 129 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2BadHit [private]

Definition at line 120 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2DeltaHit [private]

Definition at line 121 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2GoodHit [private]

Definition at line 119 of file TestTrackHits.h.

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

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

Definition at line 115 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2Increment_mono [private]

Definition at line 116 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2Increment_stereo [private]

Definition at line 117 of file TestTrackHits.h.

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

std::map<std::string,TH2F*> TestTrackHits::hChi2IncrementVsEta [private]

Definition at line 118 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2NSharedHit [private]

Definition at line 122 of file TestTrackHits.h.

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

std::map<std::string,TH1F*> TestTrackHits::hChi2SharedHit [private]

Definition at line 123 of file TestTrackHits.h.

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

Definition at line 125 of file TestTrackHits.h.

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

TH1F* TestTrackHits::hClusterSize [private]

Definition at line 127 of file TestTrackHits.h.

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

Definition at line 125 of file TestTrackHits.h.

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

Definition at line 81 of file TestTrackHits.h.

Referenced by analyze().

Definition at line 126 of file TestTrackHits.h.

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

Definition at line 127 of file TestTrackHits.h.

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

Definition at line 128 of file TestTrackHits.h.

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

Definition at line 126 of file TestTrackHits.h.

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

Definition at line 127 of file TestTrackHits.h.

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

Definition at line 128 of file TestTrackHits.h.

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

Definition at line 125 of file TestTrackHits.h.

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

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

Definition at line 106 of file TestTrackHits.h.

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

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

Definition at line 136 of file TestTrackHits.h.

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

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

Definition at line 149 of file TestTrackHits.h.

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

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

Definition at line 107 of file TestTrackHits.h.

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

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

Definition at line 137 of file TestTrackHits.h.

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

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

Definition at line 150 of file TestTrackHits.h.

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

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

Definition at line 108 of file TestTrackHits.h.

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

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

Definition at line 138 of file TestTrackHits.h.

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

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

Definition at line 151 of file TestTrackHits.h.

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

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

Definition at line 109 of file TestTrackHits.h.

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

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

Definition at line 139 of file TestTrackHits.h.

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

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

Definition at line 152 of file TestTrackHits.h.

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

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

Definition at line 112 of file TestTrackHits.h.

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

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

Definition at line 142 of file TestTrackHits.h.

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

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

Definition at line 155 of file TestTrackHits.h.

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

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

Definition at line 103 of file TestTrackHits.h.

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

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

Definition at line 133 of file TestTrackHits.h.

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

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

Definition at line 146 of file TestTrackHits.h.

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

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

Definition at line 110 of file TestTrackHits.h.

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

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

Definition at line 140 of file TestTrackHits.h.

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

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

Definition at line 153 of file TestTrackHits.h.

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

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

Definition at line 113 of file TestTrackHits.h.

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

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

Definition at line 143 of file TestTrackHits.h.

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

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

Definition at line 156 of file TestTrackHits.h.

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

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

Definition at line 104 of file TestTrackHits.h.

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

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

Definition at line 134 of file TestTrackHits.h.

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

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

Definition at line 147 of file TestTrackHits.h.

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

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

Definition at line 111 of file TestTrackHits.h.

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

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

Definition at line 141 of file TestTrackHits.h.

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

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

Definition at line 154 of file TestTrackHits.h.

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

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

Definition at line 114 of file TestTrackHits.h.

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

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

Definition at line 144 of file TestTrackHits.h.

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

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

Definition at line 157 of file TestTrackHits.h.

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

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

Definition at line 105 of file TestTrackHits.h.

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

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

Definition at line 135 of file TestTrackHits.h.

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

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

Definition at line 148 of file TestTrackHits.h.

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

Definition at line 128 of file TestTrackHits.h.

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

Definition at line 126 of file TestTrackHits.h.

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

Definition at line 127 of file TestTrackHits.h.

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

Definition at line 128 of file TestTrackHits.h.

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

Definition at line 126 of file TestTrackHits.h.

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

Definition at line 127 of file TestTrackHits.h.

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

Definition at line 128 of file TestTrackHits.h.

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

Definition at line 124 of file TestTrackHits.h.

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

Definition at line 124 of file TestTrackHits.h.

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

Definition at line 124 of file TestTrackHits.h.

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

Definition at line 124 of file TestTrackHits.h.

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

Definition at line 124 of file TestTrackHits.h.

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

Definition at line 124 of file TestTrackHits.h.

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

TH1F * TestTrackHits::mergedPull [private]

Definition at line 129 of file TestTrackHits.h.

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

std::string TestTrackHits::out [private]

Definition at line 88 of file TestTrackHits.h.

Referenced by beginRun(), and TestTrackHits().

TH1F * TestTrackHits::probXbad [private]

Definition at line 130 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probXdelta [private]

Definition at line 130 of file TestTrackHits.h.

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

TH1F* TestTrackHits::probXgood [private]

Definition at line 130 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probXnoshare [private]

Definition at line 130 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probXshared [private]

Definition at line 130 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probYbad [private]

Definition at line 131 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probYdelta [private]

Definition at line 131 of file TestTrackHits.h.

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

TH1F* TestTrackHits::probYgood [private]

Definition at line 131 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probYnoshare [private]

Definition at line 131 of file TestTrackHits.h.

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

TH1F * TestTrackHits::probYshared [private]

Definition at line 131 of file TestTrackHits.h.

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

std::string TestTrackHits::propagatorName [private]

Definition at line 83 of file TestTrackHits.h.

Referenced by beginRun(), and TestTrackHits().

std::string TestTrackHits::srcName [private]

Definition at line 85 of file TestTrackHits.h.

Referenced by analyze(), and TestTrackHits().

Definition at line 92 of file TestTrackHits.h.

Referenced by analyze(), and beginRun().

Definition at line 89 of file TestTrackHits.h.

Referenced by beginRun().

Definition at line 90 of file TestTrackHits.h.

Referenced by analyze(), and beginRun().

Definition at line 91 of file TestTrackHits.h.

Referenced by beginRun().

Definition at line 93 of file TestTrackHits.h.

Referenced by beginRun().

std::stringstream TestTrackHits::title [private]

Definition at line 102 of file TestTrackHits.h.

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

std::string TestTrackHits::tpName [private]

Definition at line 86 of file TestTrackHits.h.

Referenced by analyze(), and TestTrackHits().

Definition at line 94 of file TestTrackHits.h.

Referenced by analyze(), and beginRun().

Definition at line 96 of file TestTrackHits.h.

Referenced by analyze().

Definition at line 98 of file TestTrackHits.h.

Referenced by analyze().

Definition at line 95 of file TestTrackHits.h.

Referenced by analyze().

Definition at line 97 of file TestTrackHits.h.

Referenced by analyze().

std::string TestTrackHits::updatorName [private]

Definition at line 87 of file TestTrackHits.h.

Referenced by beginRun(), and TestTrackHits().