CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes

SiPixelRecHitsValid Class Reference

#include <SiPixelRecHitsValid.h>

Inheritance diagram for SiPixelRecHitsValid:
edm::EDAnalyzer

List of all members.

Public Member Functions

 SiPixelRecHitsValid (const edm::ParameterSet &conf)
 ~SiPixelRecHitsValid ()

Protected Member Functions

virtual void analyze (const edm::Event &e, const edm::EventSetup &c)
void beginJob ()
void endJob ()

Private Member Functions

void fillBarrel (const SiPixelRecHit &, const PSimHit &, DetId, const PixelGeomDetUnit *)
void fillForward (const SiPixelRecHit &, const PSimHit &, DetId, const PixelGeomDetUnit *)

Private Attributes

MonitorElementclustChargeDisk1Plaquettes [7]
MonitorElementclustChargeDisk2Plaquettes [7]
MonitorElementclustChargeLayer1Modules [8]
MonitorElementclustChargeLayer2Modules [8]
MonitorElementclustChargeLayer3Modules [8]
MonitorElementclustXSizeDisk1Plaquettes [7]
MonitorElementclustXSizeDisk2Plaquettes [7]
MonitorElementclustXSizeLayer [3]
MonitorElementclustYSizeDisk1Plaquettes [7]
MonitorElementclustYSizeDisk2Plaquettes [7]
MonitorElementclustYSizeModule [8]
edm::ParameterSet conf_
DQMStoredbe_
std::string outputFile_
MonitorElementrecHitXFullModules
MonitorElementrecHitXHalfModules
MonitorElementrecHitXPlaquetteSize1
MonitorElementrecHitXPlaquetteSize2
MonitorElementrecHitXPullAllB
MonitorElementrecHitXPullAllF
MonitorElementrecHitXPullDisk1Plaquettes [7]
MonitorElementrecHitXPullDisk2Plaquettes [7]
MonitorElementrecHitXPullFlippedLadderLayers [3]
MonitorElementrecHitXPullNonFlippedLadderLayers [3]
MonitorElementrecHitXResAllB
MonitorElementrecHitXResAllF
MonitorElementrecHitXResDisk1Plaquettes [7]
MonitorElementrecHitXResDisk2Plaquettes [7]
MonitorElementrecHitXResFlippedLadderLayers [3]
MonitorElementrecHitXResNonFlippedLadderLayers [3]
MonitorElementrecHitYAllModules
MonitorElementrecHitYPlaquetteSize2
MonitorElementrecHitYPlaquetteSize3
MonitorElementrecHitYPlaquetteSize4
MonitorElementrecHitYPlaquetteSize5
MonitorElementrecHitYPullAllB
MonitorElementrecHitYPullAllF
MonitorElementrecHitYPullDisk1Plaquettes [7]
MonitorElementrecHitYPullDisk2Plaquettes [7]
MonitorElementrecHitYPullLayer1Modules [8]
MonitorElementrecHitYPullLayer2Modules [8]
MonitorElementrecHitYPullLayer3Modules [8]
MonitorElementrecHitYResAllB
MonitorElementrecHitYResAllF
MonitorElementrecHitYResDisk1Plaquettes [7]
MonitorElementrecHitYResDisk2Plaquettes [7]
MonitorElementrecHitYResLayer1Modules [8]
MonitorElementrecHitYResLayer2Modules [8]
MonitorElementrecHitYResLayer3Modules [8]
edm::InputTag src_

Detailed Description

File: SiPixelRecHitsValid.h

Author:
Jason Shaev, JHU Created: 6/7/06

Definition at line 49 of file SiPixelRecHitsValid.h.


Constructor & Destructor Documentation

SiPixelRecHitsValid::SiPixelRecHitsValid ( const edm::ParameterSet conf)

Definition at line 37 of file SiPixelRecHitsValid.cc.

References clustChargeDisk1Plaquettes, clustChargeDisk2Plaquettes, clustChargeLayer1Modules, clustChargeLayer2Modules, clustChargeLayer3Modules, clustXSizeDisk1Plaquettes, clustXSizeDisk2Plaquettes, clustXSizeLayer, clustYSizeDisk1Plaquettes, clustYSizeDisk2Plaquettes, clustYSizeModule, dbe_, edm::ParameterSet::getUntrackedParameter(), timingPdfMaker::histo, i, cmsCodeRules::cppFunctionSkipper::operator, outputFile_, recHitXFullModules, recHitXHalfModules, recHitXPlaquetteSize1, recHitXPlaquetteSize2, recHitXPullAllB, recHitXPullAllF, recHitXPullDisk1Plaquettes, recHitXPullDisk2Plaquettes, recHitXPullFlippedLadderLayers, recHitXPullNonFlippedLadderLayers, recHitXResAllB, recHitXResAllF, recHitXResDisk1Plaquettes, recHitXResDisk2Plaquettes, recHitXResFlippedLadderLayers, recHitXResNonFlippedLadderLayers, recHitYAllModules, recHitYPlaquetteSize2, recHitYPlaquetteSize3, recHitYPlaquetteSize4, recHitYPlaquetteSize5, recHitYPullAllB, recHitYPullAllF, recHitYPullDisk1Plaquettes, recHitYPullDisk2Plaquettes, recHitYPullLayer1Modules, recHitYPullLayer2Modules, recHitYPullLayer3Modules, recHitYResAllB, recHitYResAllF, recHitYResDisk1Plaquettes, recHitYResDisk2Plaquettes, recHitYResLayer1Modules, recHitYResLayer2Modules, and recHitYResLayer3Modules.

                                                              : 
  dbe_(0), 
  conf_(ps),
  src_( ps.getParameter<edm::InputTag>( "src" ) ) 
{
  outputFile_ = ps.getUntrackedParameter<string>("outputFile", "pixelrechitshisto.root");
  dbe_ = Service<DQMStore>().operator->();
  //dbe_->showDirStructure();
  dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustBPIX");
  
  Char_t histo[200];
  
  // ---------------------------------------------------------------
  // All histograms that depend on plaquette number have 7 indexes.
  // The first 4 (0-3) correspond to Panel 1 plaquettes 1-4.
  // The last 3 (4-6) correspond to Panel 2 plaquettes 1-3.
  // ---------------------------------------------------------------
  
  //Cluster y-size by module number for barrel
  for (int i=0; i<8; i++) {
    sprintf(histo, "Clust_y_size_Module%d", i+1);
    clustYSizeModule[i] = dbe_->book1D(histo,"Cluster y-size by Module", 20, 0.5, 20.5); 
  } // end for
  
  //Cluster x-size by layer for barrel
  for (int i=0; i<3; i++) {
    sprintf(histo, "Clust_x_size_Layer%d", i+1);
    clustXSizeLayer[i] = dbe_->book1D(histo,"Cluster x-size by Layer", 20, 0.5, 20.5);
  } // end for
  
  //Cluster charge by module for 3 layers of barrel
  for (int i=0; i<8; i++) {
    //Cluster charge by module for Layer1
    sprintf(histo, "Clust_charge_Layer1_Module%d", i+1);
    clustChargeLayer1Modules[i] = dbe_->book1D(histo, "Cluster charge Layer 1 by Module", 50, 0., 200000.);
    
    //Cluster charge by module for Layer2
    sprintf(histo, "Clust_charge_Layer2_Module%d", i+1);
    clustChargeLayer2Modules[i] = dbe_->book1D(histo, "Cluster charge Layer 2 by Module", 50, 0., 200000.);
    
    //Cluster charge by module for Layer3
    sprintf(histo, "Clust_charge_Layer3_Module%d", i+1);
    clustChargeLayer3Modules[i] = dbe_->book1D(histo, "Cluster charge Layer 3 by Module",50, 0., 200000.);      
  } // end for
  
  dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustFPIX");
  //Cluster x-size, y-size, and charge by plaquette for Disks in Forward
  for (int i=0; i<7; i++) {
    //Cluster x-size for Disk1 by Plaquette
    sprintf(histo, "Clust_x_size_Disk1_Plaquette%d", i+1);
    clustXSizeDisk1Plaquettes[i] = dbe_->book1D(histo, "Cluster X-size for Disk1 by Plaquette", 20, 0.5, 20.5);
    
    //Cluster x-size for Disk2 by Plaquette
    sprintf(histo, "Clust_x_size_Disk2_Plaquette%d", i+1);
    clustXSizeDisk2Plaquettes[i] = dbe_->book1D(histo, "Cluster X-size for Disk2 by Plaquette", 20, 0.5, 20.5);
    
    //Cluster y-size for Disk1 by Plaquette
    sprintf(histo, "Clust_y_size_Disk1_Plaquette%d", i+1);
    clustYSizeDisk1Plaquettes[i] = dbe_->book1D(histo, "Cluster Y-size for Disk1 by Plaquette", 20, 0.5, 20.5);
    
    //Cluster y-size for Disk2 by Plaquette
    sprintf(histo, "Clust_y_size_Disk2_Plaquette%d", i+1);
    clustYSizeDisk2Plaquettes[i] = dbe_->book1D(histo, "Cluster Y-size for Disk2 by Plaquette", 20, 0.5, 20.5);
    
    //Cluster charge for Disk1 by Plaquette
    sprintf(histo, "Clust_charge_Disk1_Plaquette%d", i+1);
    clustChargeDisk1Plaquettes[i] = dbe_->book1D(histo, "Cluster charge for Disk1 by Plaquette", 50, 0., 200000.);
    
    //Cluster charge for Disk2 by Plaquette
    sprintf(histo, "Clust_charge_Disk2_Plaquette%d", i+1);
    clustChargeDisk2Plaquettes[i] = dbe_->book1D(histo, "Cluster charge for Disk2 by Plaquette", 50, 0., 200000.);
  } // end for
  


  dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitBPIX");
  //RecHit X Resolution all barrel hits
  recHitXResAllB = dbe_->book1D("RecHit_xres_b_All","RecHit X Res All Modules in Barrel", 100, -200., 200.);
  
  //RecHit Y Resolution all barrel hits
  recHitYResAllB = dbe_->book1D("RecHit_yres_b_All","RecHit Y Res All Modules in Barrel", 100, -200., 200.);
  
  //RecHit X distribution for full modules for barrel
  recHitXFullModules = dbe_->book1D("RecHit_x_FullModules", "RecHit X distribution for full modules", 100,-2., 2.);
  
  //RecHit X distribution for half modules for barrel
  recHitXHalfModules = dbe_->book1D("RecHit_x_HalfModules", "RecHit X distribution for half modules", 100, -1., 1.);
  
  //RecHit Y distribution all modules for barrel
  recHitYAllModules = dbe_->book1D("RecHit_y_AllModules", "RecHit Y distribution for all modules", 100, -4., 4.);
  
  //RecHit X resolution for flipped and unflipped ladders by layer for barrel
  for (int i=0; i<3; i++) {
    //RecHit X resolution for flipped ladders by layer
    sprintf(histo, "RecHit_XRes_FlippedLadder_Layer%d", i+1);
    recHitXResFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XRes Flipped Ladders by Layer", 100, -200., 200.);
    
    //RecHit X resolution for unflipped ladders by layer
    sprintf(histo, "RecHit_XRes_UnFlippedLadder_Layer%d", i+1);
    recHitXResNonFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XRes NonFlipped Ladders by Layer", 100, -200., 200.);
  } // end for
  
  //RecHit Y resolutions for layers by module for barrel
  for (int i=0; i<8; i++) {
    //Rec Hit Y resolution by module for Layer1
    sprintf(histo, "RecHit_YRes_Layer1_Module%d", i+1);
    recHitYResLayer1Modules[i] = dbe_->book1D(histo, "RecHit YRes Layer1 by module", 100, -200., 200.);
    
    //RecHit Y resolution by module for Layer2
    sprintf(histo, "RecHit_YRes_Layer2_Module%d", i+1);
    recHitYResLayer2Modules[i] = dbe_->book1D(histo, "RecHit YRes Layer2 by module", 100, -200., 200.);
    
    //RecHit Y resolution by module for Layer3
    sprintf(histo, "RecHit_YRes_Layer3_Module%d", i+1);
    recHitYResLayer3Modules[i] = dbe_->book1D(histo, "RecHit YRes Layer3 by module", 100, -200., 200.); 
  } // end for
  
  dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitFPIX");
  //RecHit X resolution all plaquettes
  recHitXResAllF = dbe_->book1D("RecHit_xres_f_All", "RecHit X Res All in Forward", 100, -200., 200.);
  
  //RecHit Y resolution all plaquettes
  recHitYResAllF = dbe_->book1D("RecHit_yres_f_All", "RecHit Y Res All in Forward", 100, -200., 200.);
  
  //RecHit X distribution for plaquette with x-size 1 in forward
  recHitXPlaquetteSize1 = dbe_->book1D("RecHit_x_Plaquette_xsize1", "RecHit X Distribution for plaquette x-size1", 100, -2., 2.);
  
  //RecHit X distribution for plaquette with x-size 2 in forward
  recHitXPlaquetteSize2 = dbe_->book1D("RecHit_x_Plaquette_xsize2", "RecHit X Distribution for plaquette x-size2", 100, -2., 2.);
  
  //RecHit Y distribution for plaquette with y-size 2 in forward
  recHitYPlaquetteSize2 = dbe_->book1D("RecHit_y_Plaquette_ysize2", "RecHit Y Distribution for plaquette y-size2", 100, -4., 4.);
  
  //RecHit Y distribution for plaquette with y-size 3 in forward
  recHitYPlaquetteSize3 = dbe_->book1D("RecHit_y_Plaquette_ysize3", "RecHit Y Distribution for plaquette y-size3", 100, -4., 4.);
  
  //RecHit Y distribution for plaquette with y-size 4 in forward
  recHitYPlaquetteSize4 = dbe_->book1D("RecHit_y_Plaquette_ysize4", "RecHit Y Distribution for plaquette y-size4", 100, -4., 4.);
  
  //RecHit Y distribution for plaquette with y-size 5 in forward
  recHitYPlaquetteSize5 = dbe_->book1D("RecHit_y_Plaquette_ysize5", "RecHit Y Distribution for plaquette y-size5", 100, -4., 4.);
  
  //X and Y resolutions for both disks by plaquette in forward
  for (int i=0; i<7; i++) {
    //X resolution for Disk1 by plaquette
    sprintf(histo, "RecHit_XRes_Disk1_Plaquette%d", i+1);
    recHitXResDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit XRes Disk1 by plaquette", 100, -200., 200.); 
    //X resolution for Disk2 by plaquette
    sprintf(histo, "RecHit_XRes_Disk2_Plaquette%d", i+1);
    recHitXResDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit XRes Disk2 by plaquette", 100, -200., 200.);  
    
    //Y resolution for Disk1 by plaquette
    sprintf(histo, "RecHit_YRes_Disk1_Plaquette%d", i+1);
    recHitYResDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit YRes Disk1 by plaquette", 100, -200., 200.);
    //Y resolution for Disk2 by plaquette
    sprintf(histo, "RecHit_YRes_Disk2_Plaquette%d", i+1);
    recHitYResDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit YRes Disk2 by plaquette", 100, -200., 200.);
    
  }


  dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsBPIX");
  recHitXPullAllB        = dbe_->book1D("RecHit_xres_b_All"       , "RecHit X Pull All Modules in Barrel"        , 100, -10.0, 10.0);
  recHitYPullAllB        = dbe_->book1D("RecHit_yres_b_All"       , "RecHit Y Pull All Modules in Barrel"        , 100, -10.0, 10.0);

  for (int i=0; i<3; i++) 
    {
      sprintf(histo, "RecHit_XPull_FlippedLadder_Layer%d", i+1);
      recHitXPullFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XPull Flipped Ladders by Layer", 100, -10.0, 10.0);
      
      sprintf(histo, "RecHit_XPull_UnFlippedLadder_Layer%d", i+1);
      recHitXPullNonFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XPull NonFlipped Ladders by Layer", 100, -10.0, 10.0);
    }
  
  for (int i=0; i<8; i++) 
    {
      sprintf(histo, "RecHit_YPull_Layer1_Module%d", i+1);
      recHitYPullLayer1Modules[i] = dbe_->book1D(histo, "RecHit YPull Layer1 by module", 100, -10.0, 10.0);
      
      sprintf(histo, "RecHit_YPull_Layer2_Module%d", i+1);
      recHitYPullLayer2Modules[i] = dbe_->book1D(histo, "RecHit YPull Layer2 by module", 100, -10.0, 10.0);
      
      sprintf(histo, "RecHit_YPull_Layer3_Module%d", i+1);
      recHitYPullLayer3Modules[i] = dbe_->book1D(histo, "RecHit YPull Layer3 by module", 100, -10.0, 10.0); 
    }
  
  dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsFPIX");
  recHitXPullAllF = dbe_->book1D("RecHit_XPull_f_All", "RecHit X Pull All in Forward", 100, -10.0, 10.0);
  
  recHitYPullAllF = dbe_->book1D("RecHit_YPull_f_All", "RecHit Y Pull All in Forward", 100, -10.0, 10.0);
  
  for (int i=0; i<7; i++) 
    {
      sprintf(histo, "RecHit_XPull_Disk1_Plaquette%d", i+1);
      recHitXPullDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit XPull Disk1 by plaquette", 100, -10.0, 10.0); 
      sprintf(histo, "RecHit_XPull_Disk2_Plaquette%d", i+1);
      recHitXPullDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit XPull Disk2 by plaquette", 100, -10.0, 10.0);  
      
      sprintf(histo, "RecHit_YPull_Disk1_Plaquette%d", i+1);
      recHitYPullDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit YPull Disk1 by plaquette", 100, -10.0, 10.0);
      
      sprintf(histo, "RecHit_YPull_Disk2_Plaquette%d", i+1);
      recHitYPullDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit YPull Disk2 by plaquette", 100, -10.0, 10.0);
    }

}
SiPixelRecHitsValid::~SiPixelRecHitsValid ( )

Definition at line 244 of file SiPixelRecHitsValid.cc.

                                          {
}

Member Function Documentation

void SiPixelRecHitsValid::analyze ( const edm::Event e,
const edm::EventSetup c 
) [protected, virtual]

Implements edm::EDAnalyzer.

Definition at line 255 of file SiPixelRecHitsValid.cc.

References TrackerHitAssociator::associateHit(), edmNew::DetSet< T >::begin(), conf_, gather_cfg::cout, edmNew::DetSet< T >::end(), edm::EventID::event(), fillBarrel(), fillForward(), relativeConstraints::geom, edm::EventSetup::get(), edm::Event::getByLabel(), edm::EventBase::id(), TrackerGeometry::idToDet(), m, edm::EventID::run(), mathSSE::sqrt(), src_, DetId::subdetId(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

{
  
  LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
  if ( (int) e.id().event() % 1000 == 0 )
    cout << " Run = " << e.id().run() << " Event = " << e.id().event() << endl;
  
  //Get RecHits
  edm::Handle<SiPixelRecHitCollection> recHitColl;
  e.getByLabel( src_, recHitColl);
  
  //Get event setup
  edm::ESHandle<TrackerGeometry> geom;
  es.get<TrackerDigiGeometryRecord>().get(geom); 
  const TrackerGeometry& theTracker(*geom);
  
  TrackerHitAssociator associate( e, conf_ ); 
  
  //iterate over detunits
  for (TrackerGeometry::DetContainer::const_iterator it = geom->dets().begin(); it != geom->dets().end(); it++) 
    {
      DetId detId = ((*it)->geographicalId());
      unsigned int subid=detId.subdetId();
      
      if (! ((subid==1) || (subid==2))) continue;
      
      const PixelGeomDetUnit * theGeomDet = dynamic_cast<const PixelGeomDetUnit*>(theTracker.idToDet(detId) );
      
      SiPixelRecHitCollection::const_iterator pixeldet = recHitColl->find(detId);
      if (pixeldet == recHitColl->end()) continue;
      SiPixelRecHitCollection::DetSet pixelrechitRange = *pixeldet;
      SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorBegin = pixelrechitRange.begin();
      SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorEnd   = pixelrechitRange.end();
      SiPixelRecHitCollection::DetSet::const_iterator pixeliter = pixelrechitRangeIteratorBegin;
      std::vector<PSimHit> matched;
      
      //----Loop over rechits for this detId
      for ( ; pixeliter != pixelrechitRangeIteratorEnd; pixeliter++) 
        {
          matched.clear();
          matched = associate.associateHit(*pixeliter);
          
          if ( !matched.empty() ) 
            {
              float closest = 9999.9;
              std::vector<PSimHit>::const_iterator closestit = matched.begin();
              LocalPoint lp = pixeliter->localPosition();
              float rechit_x = lp.x();
              float rechit_y = lp.y();

              //loop over sim hits and fill closet
              for (std::vector<PSimHit>::const_iterator m = matched.begin(); m<matched.end(); m++) 
                {
                  float sim_x1 = (*m).entryPoint().x();
                  float sim_x2 = (*m).exitPoint().x();
                  float sim_xpos = 0.5*(sim_x1+sim_x2);

                  float sim_y1 = (*m).entryPoint().y();
                  float sim_y2 = (*m).exitPoint().y();
                  float sim_ypos = 0.5*(sim_y1+sim_y2);
                  
                  float x_res = fabs(sim_xpos - rechit_x);
                  float y_res = fabs(sim_ypos - rechit_y);
                  
                  float dist = sqrt(x_res*x_res + y_res*y_res);

                  if ( dist < closest ) 
                    {
                      closest = x_res;
                      closestit = m;
                    }
                } // end sim hit loop
              
              if (subid==1) 
                { //<----------barrel
                  fillBarrel(*pixeliter, *closestit, detId, theGeomDet);        
                } // end barrel
              if (subid==2) 
                { // <-------forward
                  fillForward(*pixeliter, *closestit, detId, theGeomDet);
                }
              
            } // end matched emtpy
        } // <-----end rechit loop 
    } // <------ end detunit loop
}
void SiPixelRecHitsValid::beginJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 247 of file SiPixelRecHitsValid.cc.

                                   {
  
}
void SiPixelRecHitsValid::endJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 251 of file SiPixelRecHitsValid.cc.

References dbe_, outputFile_, and DQMStore::save().

                                 {
  if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
}
void SiPixelRecHitsValid::fillBarrel ( const SiPixelRecHit recHit,
const PSimHit simHit,
DetId  detId,
const PixelGeomDetUnit theGeomDet 
) [private]

Definition at line 342 of file SiPixelRecHitsValid.cc.

References DeDxDiscriminatorTools::charge(), clustChargeLayer1Modules, clustChargeLayer2Modules, clustChargeLayer3Modules, SiPixelRecHit::cluster(), clustXSizeLayer, clustYSizeModule, PSimHit::entryPoint(), PSimHit::exitPoint(), MonitorElement::Fill(), i, BaseSiTrackerRecHit2DLocalPos::localPosition(), BaseSiTrackerRecHit2DLocalPos::localPositionError(), module(), PixelTopology::nrows(), PV3DBase< T, PVType, FrameType >::perp(), recHitXFullModules, recHitXHalfModules, recHitXPullAllB, recHitXPullFlippedLadderLayers, recHitXPullNonFlippedLadderLayers, recHitXResAllB, recHitXResFlippedLadderLayers, recHitXResNonFlippedLadderLayers, recHitYAllModules, recHitYPullAllB, recHitYPullLayer1Modules, recHitYPullLayer2Modules, recHitYPullLayer3Modules, recHitYResAllB, recHitYResLayer1Modules, recHitYResLayer2Modules, recHitYResLayer3Modules, tablePrinter::rows, PixelGeomDetUnit::specificTopology(), mathSSE::sqrt(), GeomDet::surface(), Surface::toGlobal(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), PV3DBase< T, PVType, FrameType >::y(), and LocalError::yy().

Referenced by analyze().

{
  const float cmtomicron = 10000.0; 
  
  LocalPoint lp = recHit.localPosition();
  float lp_y = lp.y();  
  float lp_x = lp.x();

  LocalError lerr = recHit.localPositionError();
  float lerr_x = sqrt(lerr.xx());
  float lerr_y = sqrt(lerr.yy());
  
  recHitYAllModules->Fill(lp_y);
  
  float sim_x1 = simHit.entryPoint().x();
  float sim_x2 = simHit.exitPoint().x();
  float sim_xpos = 0.5*(sim_x1 + sim_x2);
  float res_x = (lp.x() - sim_xpos)*cmtomicron;
  
  recHitXResAllB->Fill(res_x);
  
  float sim_y1 = simHit.entryPoint().y();
  float sim_y2 = simHit.exitPoint().y();
  float sim_ypos = 0.5*(sim_y1 + sim_y2);
  float res_y = (lp.y() - sim_ypos)*cmtomicron;
  
  recHitYResAllB->Fill(res_y);
  
  float pull_x = ( lp_x - sim_xpos ) / lerr_x;
  float pull_y = ( lp_y - sim_ypos ) / lerr_y;

  recHitXPullAllB->Fill(pull_x);  
  recHitYPullAllB->Fill(pull_y);

  int rows = theGeomDet->specificTopology().nrows();
  
  if (rows == 160) 
    {
      recHitXFullModules->Fill(lp_x);
    } 
  else if (rows == 80) 
    {
      recHitXHalfModules->Fill(lp_x);
    }
  
  float tmp1 = theGeomDet->surface().toGlobal(Local3DPoint(0.,0.,0.)).perp();
  float tmp2 = theGeomDet->surface().toGlobal(Local3DPoint(0.,0.,1.)).perp();
  
  if (tmp2<tmp1) 
    { // flipped
      for (unsigned int i=0; i<3; i++) 
        {
          if (PXBDetId(detId).layer() == i+1) 
            {
              recHitXResFlippedLadderLayers[i]->Fill(res_x);
              recHitXPullFlippedLadderLayers[i]->Fill(pull_x);
            }
        }
    } 
  else 
    {
      for (unsigned int i=0; i<3; i++) 
        {
          if (PXBDetId(detId).layer() == i+1) 
            {
              recHitXResNonFlippedLadderLayers[i]->Fill(res_x);
              recHitXPullNonFlippedLadderLayers[i]->Fill(pull_x);
            }
        }
    }
  
  //get cluster
  SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
  
  // fill module dependent info
  for (unsigned int i=0; i<8; i++) 
    {
      if (PXBDetId(detId).module() == i+1) 
        {
          int sizeY = (*clust).sizeY();
          clustYSizeModule[i]->Fill(sizeY);
          
          if (PXBDetId(detId).layer() == 1) 
            {
              float charge = (*clust).charge();
              clustChargeLayer1Modules[i]->Fill(charge);
              recHitYResLayer1Modules[i]->Fill(res_y);
              recHitYPullLayer1Modules[i]->Fill(pull_y);
            }
          else if (PXBDetId(detId).layer() == 2) 
            {
              float charge = (*clust).charge();
              clustChargeLayer2Modules[i]->Fill(charge);
              recHitYResLayer2Modules[i]->Fill(res_y);
              recHitYPullLayer2Modules[i]->Fill(pull_y);
            }
          else if (PXBDetId(detId).layer() == 3) 
            {
              float charge = (*clust).charge();
              clustChargeLayer3Modules[i]->Fill(charge);
              recHitYResLayer3Modules[i]->Fill(res_y);
              recHitYPullLayer3Modules[i]->Fill(pull_y);
            }
        }
    }
  int sizeX = (*clust).sizeX();
  if (PXBDetId(detId).layer() == 1) clustXSizeLayer[0]->Fill(sizeX);
  if (PXBDetId(detId).layer() == 2) clustXSizeLayer[1]->Fill(sizeX);
  if (PXBDetId(detId).layer() == 3) clustXSizeLayer[2]->Fill(sizeX);
}
void SiPixelRecHitsValid::fillForward ( const SiPixelRecHit recHit,
const PSimHit simHit,
DetId  detId,
const PixelGeomDetUnit theGeomDet 
) [private]

Definition at line 454 of file SiPixelRecHitsValid.cc.

References DeDxDiscriminatorTools::charge(), clustChargeDisk1Plaquettes, clustChargeDisk2Plaquettes, SiPixelRecHit::cluster(), clustXSizeDisk1Plaquettes, clustXSizeDisk2Plaquettes, clustYSizeDisk1Plaquettes, clustYSizeDisk2Plaquettes, PSimHit::entryPoint(), PSimHit::exitPoint(), MonitorElement::Fill(), i, BaseSiTrackerRecHit2DLocalPos::localPosition(), BaseSiTrackerRecHit2DLocalPos::localPositionError(), module(), PixelTopology::ncolumns(), PixelTopology::nrows(), recHitXPlaquetteSize1, recHitXPlaquetteSize2, recHitXPullAllF, recHitXPullDisk1Plaquettes, recHitXPullDisk2Plaquettes, recHitXResAllF, recHitXResDisk1Plaquettes, recHitXResDisk2Plaquettes, recHitYPlaquetteSize2, recHitYPlaquetteSize3, recHitYPlaquetteSize4, recHitYPlaquetteSize5, recHitYPullAllF, recHitYPullDisk1Plaquettes, recHitYPullDisk2Plaquettes, recHitYResDisk1Plaquettes, recHitYResDisk2Plaquettes, tablePrinter::rows, PixelGeomDetUnit::specificTopology(), mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), PV3DBase< T, PVType, FrameType >::y(), and LocalError::yy().

Referenced by analyze().

{
  int rows = theGeomDet->specificTopology().nrows();
  int cols = theGeomDet->specificTopology().ncolumns();
  
  const float cmtomicron = 10000.0;
  
  LocalPoint lp = recHit.localPosition();
  float lp_x = lp.x();
  float lp_y = lp.y();
  
  LocalError lerr = recHit.localPositionError();
  float lerr_x = sqrt(lerr.xx());
  float lerr_y = sqrt(lerr.yy());

  float sim_x1 = simHit.entryPoint().x();
  float sim_x2 = simHit.exitPoint().x();
  float sim_xpos = 0.5*(sim_x1 + sim_x2);
  
  float sim_y1 = simHit.entryPoint().y();
  float sim_y2 = simHit.exitPoint().y();
  float sim_ypos = 0.5*(sim_y1 + sim_y2);
  
  float pull_x = ( lp_x - sim_xpos ) / lerr_x;
  float pull_y = ( lp_y - sim_ypos ) / lerr_y;


  if (rows == 80) 
    {
      recHitXPlaquetteSize1->Fill(lp_x);
    } 
  else if (rows == 160) 
    {
      recHitXPlaquetteSize2->Fill(lp_x);
    }
  
  if (cols == 104) 
    {
      recHitYPlaquetteSize2->Fill(lp_y);
    } 
  else if (cols == 156) 
    {
      recHitYPlaquetteSize3->Fill(lp_y);
    } 
  else if (cols == 208) 
    {
      recHitYPlaquetteSize4->Fill(lp_y);
    } 
  else if (cols == 260) 
    {
      recHitYPlaquetteSize5->Fill(lp_y);
    }
  
  float res_x = (lp.x() - sim_xpos)*cmtomicron;
  
  recHitXResAllF->Fill(res_x);
  recHitXPullAllF->Fill(pull_x);

  float res_y = (lp.y() - sim_ypos)*cmtomicron;
  
  recHitYPullAllF->Fill(pull_y);
  
  // get cluster
  SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
  
  // fill plaquette dependent info
  for (unsigned int i=0; i<7; i++) 
    {
      if (PXFDetId(detId).module() == i+1) 
        {
          if (PXFDetId(detId).disk() == 1) 
            {
              int sizeX = (*clust).sizeX();
              clustXSizeDisk1Plaquettes[i]->Fill(sizeX);
              
              int sizeY = (*clust).sizeY();
              clustYSizeDisk1Plaquettes[i]->Fill(sizeY);
              
              float charge = (*clust).charge();
              clustChargeDisk1Plaquettes[i]->Fill(charge);
              
              recHitXResDisk1Plaquettes[i]->Fill(res_x);
              recHitYResDisk1Plaquettes[i]->Fill(res_y);

              recHitXPullDisk1Plaquettes[i]->Fill(pull_x);
              recHitYPullDisk1Plaquettes[i]->Fill(pull_y);
            }
          else 
            {
              int sizeX = (*clust).sizeX();
              clustXSizeDisk2Plaquettes[i]->Fill(sizeX);
              
              int sizeY = (*clust).sizeY();
              clustYSizeDisk2Plaquettes[i]->Fill(sizeY);
              
              float charge = (*clust).charge();
              clustChargeDisk2Plaquettes[i]->Fill(charge);
              
              recHitXResDisk2Plaquettes[i]->Fill(res_x);
              recHitYResDisk2Plaquettes[i]->Fill(res_y);

              recHitXPullDisk2Plaquettes[i]->Fill(pull_x);
              recHitYPullDisk2Plaquettes[i]->Fill(pull_y);
              
            } // end else
        } // end if module
      else if (PXFDetId(detId).panel() == 2 && (PXFDetId(detId).module()+4) == i+1) 
        {
          if (PXFDetId(detId).disk() == 1) 
            {
              int sizeX = (*clust).sizeX();
              clustXSizeDisk1Plaquettes[i]->Fill(sizeX);
              
              int sizeY = (*clust).sizeY();
              clustYSizeDisk1Plaquettes[i]->Fill(sizeY);
              
              float charge = (*clust).charge();
              clustChargeDisk1Plaquettes[i]->Fill(charge);
              
              recHitXResDisk1Plaquettes[i]->Fill(res_x);
              recHitYResDisk1Plaquettes[i]->Fill(res_y);

              recHitXPullDisk1Plaquettes[i]->Fill(pull_x);
              recHitYPullDisk1Plaquettes[i]->Fill(pull_y);
            }
          else 
            {
              int sizeX = (*clust).sizeX();
              clustXSizeDisk2Plaquettes[i]->Fill(sizeX);
              
              int sizeY = (*clust).sizeY();
              clustYSizeDisk2Plaquettes[i]->Fill(sizeY);
              
              float charge = (*clust).charge();
              clustChargeDisk2Plaquettes[i]->Fill(charge);
              
              recHitXResDisk2Plaquettes[i]->Fill(res_x);
              recHitYResDisk2Plaquettes[i]->Fill(res_y);

              recHitXPullDisk2Plaquettes[i]->Fill(pull_x);
              recHitYPullDisk2Plaquettes[i]->Fill(pull_y);

            } // end else
        } // end else
    } // end for
}

Member Data Documentation

Definition at line 85 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 86 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 76 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 77 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 78 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 81 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 82 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 75 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 83 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 84 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 74 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 68 of file SiPixelRecHitsValid.h.

Referenced by analyze().

Definition at line 65 of file SiPixelRecHitsValid.h.

Referenced by endJob(), and SiPixelRecHitsValid().

std::string SiPixelRecHitsValid::outputFile_ [private]

Definition at line 66 of file SiPixelRecHitsValid.h.

Referenced by endJob(), and SiPixelRecHitsValid().

Definition at line 91 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 92 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 103 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 104 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 116 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 126 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 129 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 130 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 119 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 120 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 89 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 101 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 109 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 110 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 94 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 95 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 93 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 105 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 106 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 107 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 108 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 117 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 127 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 131 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 132 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 121 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 122 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 123 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 90 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 102 of file SiPixelRecHitsValid.h.

Referenced by SiPixelRecHitsValid().

Definition at line 111 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 112 of file SiPixelRecHitsValid.h.

Referenced by fillForward(), and SiPixelRecHitsValid().

Definition at line 96 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 97 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 98 of file SiPixelRecHitsValid.h.

Referenced by fillBarrel(), and SiPixelRecHitsValid().

Definition at line 134 of file SiPixelRecHitsValid.h.

Referenced by analyze().