CMS 3D CMS Logo

PhotonAnalyzer Class Reference

$Id: PhotonAnalyzer
Date
2008/09/30 19:51:05
authors: Nancy Marinelli, U. More...

#include <DQMOffline/EGamma/interface/PhotonAnalyzer.h>

Inheritance diagram for PhotonAnalyzer:

edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob (const edm::EventSetup &)
virtual void endJob ()
 PhotonAnalyzer (const edm::ParameterSet &)
virtual ~PhotonAnalyzer ()

Private Member Functions

void dividePlots (MonitorElement *dividend, MonitorElement *numerator, MonitorElement *denominator)
void doProfileX (MonitorElement *th2m, MonitorElement *me)
void doProfileX (TH2 *th2, MonitorElement *me)
void makePizero (const edm::EventSetup &es, const edm::Handle< EcalRecHitCollection > eb, const edm::Handle< EcalRecHitCollection > ee)
float phiNormalization (float &a)

Private Attributes

edm::InputTag barrelEcalHits_
int clusEtaSize_
int clusPhiSize_
double clusSeedThr_
 parameters needed for pizero finding
std::stringstream currentFolder_
double cutStep_
DQMStoredbe_
edm::InputTag endcapEcalHits_
std::string fName_
std::vector< std::vector
< MonitorElement * > > 
h_convVtxRvsZ_
std::vector< MonitorElement * > h_convVtxRvsZ_isol_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_dCotTracks_
std::vector< std::vector
< MonitorElement * > > 
h_dCotTracks_isol_
std::vector< MonitorElement * > h_dCotTracks_part_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_dEtaTracksAtEcal_
std::vector< std::vector
< MonitorElement * > > 
h_dEtaTracksAtEcal_isol_
std::vector< MonitorElement * > h_dEtaTracksAtEcal_part_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_dPhiTracksAtEcal_
std::vector< std::vector
< MonitorElement * > > 
h_dPhiTracksAtEcal_isol_
std::vector< MonitorElement * > h_dPhiTracksAtEcal_part_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_dPhiTracksAtVtx_
std::vector< std::vector
< MonitorElement * > > 
h_dPhiTracksAtVtx_isol_
std::vector< MonitorElement * > h_dPhiTracksAtVtx_part_
std::vector< MonitorElement * > h_ecalSum_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_eOverPTracks_
std::vector< std::vector
< MonitorElement * > > 
h_eOverPTracks_isol_
std::vector< MonitorElement * > h_eOverPTracks_part_
std::vector< MonitorElement * > h_hcalSum_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_hOverE_
std::vector< std::vector
< MonitorElement * > > 
h_hOverE_isol_
std::vector< MonitorElement * > h_hOverE_part_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_nConv_
std::vector< std::vector
< MonitorElement * > > 
h_nConv_isol_
std::vector< MonitorElement * > h_nConv_part_
std::vector< std::vector
< MonitorElement * > > 
h_nHitsVsEta_
std::vector< MonitorElement * > h_nHitsVsEta_isol_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_nPho_
std::vector< std::vector
< MonitorElement * > > 
h_nPho_isol_
std::vector< MonitorElement * > h_nPho_part_
std::vector< MonitorElement * > h_nTrackIsolHollow_
std::vector< MonitorElement * > h_nTrackIsolSolid_
std::vector< std::vector
< MonitorElement * > > 
h_phoConvEta_
std::vector< MonitorElement * > h_phoConvEta_isol_
std::vector< std::vector
< MonitorElement * > > 
h_phoConvPhi_
std::vector< MonitorElement * > h_phoConvPhi_isol_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_phoDistribution_
std::vector< std::vector
< MonitorElement * > > 
h_phoDistribution_isol_
std::vector< MonitorElement * > h_phoDistribution_part_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_phoE_
std::vector< std::vector
< MonitorElement * > > 
h_phoE_isol_
std::vector< MonitorElement * > h_phoE_part_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_phoEt_
std::vector< std::vector
< MonitorElement * > > 
h_phoEt_isol_
std::vector< MonitorElement * > h_phoEt_part_
std::vector< std::vector
< MonitorElement * > > 
h_phoEta_
std::vector< MonitorElement * > h_phoEta_isol_
std::vector< std::vector
< MonitorElement * > > 
h_phoPhi_
std::vector< MonitorElement * > h_phoPhi_isol_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
h_r9_
std::vector< std::vector
< MonitorElement * > > 
h_r9_isol_
std::vector< MonitorElement * > h_r9_part_
std::vector< std::vector
< MonitorElement * > > 
h_r9VsEt_
std::vector< MonitorElement * > h_r9VsEt_isol_
std::vector< std::vector
< MonitorElement * > > 
h_tkChi2_
std::vector< MonitorElement * > h_tkChi2_isol_
std::vector< MonitorElement * > h_trackPtSumHollow_
std::vector< MonitorElement * > h_trackPtSumSolid_
MonitorElementhIsoPi0EB_
MonitorElementhMinvPi0EB_
MonitorElementhPt1Pi0EB_
MonitorElementhPt2Pi0EB_
MonitorElementhPtPi0EB_
int isolationStrength_
double minPhoEtCut_
int nEntry_
int nEvt_
int numberOfSteps_
std::vector< MonitorElement * > p_ecalSum_
std::vector< MonitorElement * > p_efficiencyVsEt_
std::vector< MonitorElement * > p_efficiencyVsEta_
std::vector< MonitorElement * > p_hcalSum_
std::vector< std::vector
< MonitorElement * > > 
p_nHitsVsEta_
std::vector< MonitorElement * > p_nHitsVsEta_isol_
std::vector< MonitorElement * > p_nTrackIsolHollow_
std::vector< MonitorElement * > p_nTrackIsolSolid_
std::vector< std::vector
< MonitorElement * > > 
p_r9VsEt_
std::vector< MonitorElement * > p_r9VsEt_isol_
std::vector< MonitorElement * > p_trackPtSumHollow_
std::vector< MonitorElement * > p_trackPtSumSolid_
bool ParameterLogWeighted_
edm::ParameterSet parameters_
double ParameterT0_barl_
double ParameterW0_
double ParameterX0_
std::string photonCollection_
std::string photonProducer_
unsigned int prescaleFactor_
double seleMinvMaxPi0_
double seleMinvMinPi0_
double selePi0BeltDeta_
double selePi0BeltDR_
double selePi0Iso_
double selePtGammaOne_
double selePtGammaTwo_
double selePtPi0_
double seleS4S9GammaOne_
double seleS4S9GammaTwo_
double seleXtalMinEnergy_
bool useBinning_
int verbosity_


Detailed Description

$Id: PhotonAnalyzer
Date
2008/09/30 19:51:05
authors: Nancy Marinelli, U.

EgammaCoreTools.

of Notre Dame, US Jamie Antonelli, U. of Notre Dame, US

$Id: PhotonAnalyzer

Date
2008/10/15 01:39:47
authors: Nancy Marinelli, U. of Notre Dame, US Jamie Antonelli, U. of Notre Dame, US

Definition at line 44 of file PhotonAnalyzer.h.


Constructor & Destructor Documentation

PhotonAnalyzer::PhotonAnalyzer ( const edm::ParameterSet pset  )  [explicit]

Definition at line 70 of file PhotonAnalyzer.cc.

References barrelEcalHits_, clusEtaSize_, clusPhiSize_, clusSeedThr_, cutStep_, endcapEcalHits_, fName_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), isolationStrength_, minPhoEtCut_, numberOfSteps_, ParameterLogWeighted_, parameters_, ParameterT0_barl_, ParameterW0_, ParameterX0_, photonCollection_, photonProducer_, prescaleFactor_, seleMinvMaxPi0_, seleMinvMinPi0_, selePi0BeltDeta_, selePi0BeltDR_, selePi0Iso_, selePtGammaOne_, selePtGammaTwo_, selePtPi0_, seleS4S9GammaOne_, seleS4S9GammaTwo_, seleXtalMinEnergy_, useBinning_, and verbosity_.

00071 {
00072 
00073     fName_              = pset.getUntrackedParameter<std::string>("Name");
00074     verbosity_          = pset.getUntrackedParameter<int>("Verbosity");
00075 
00076     prescaleFactor_     = pset.getUntrackedParameter<int>("prescaleFactor",1);
00077     
00078     photonProducer_     = pset.getParameter<std::string>("phoProducer");
00079     photonCollection_   = pset.getParameter<std::string>("photonCollection");
00080 
00081     barrelEcalHits_     = pset.getParameter<edm::InputTag>("barrelEcalHits");
00082     endcapEcalHits_     = pset.getParameter<edm::InputTag>("endcapEcalHits");
00083 
00084     minPhoEtCut_        = pset.getParameter<double>("minPhoEtCut");   
00085 
00086     cutStep_            = pset.getParameter<double>("cutStep");
00087     numberOfSteps_      = pset.getParameter<int>("numberOfSteps");
00088 
00089     useBinning_         = pset.getParameter<bool>("useBinning");
00090 
00091     isolationStrength_  = pset.getParameter<int>("isolationStrength");
00092 
00093     // parameters for Pizero finding
00094     seleXtalMinEnergy_    = pset.getParameter<double> ("seleXtalMinEnergy");
00095     clusSeedThr_          = pset.getParameter<double> ("clusSeedThr");
00096     clusEtaSize_          = pset.getParameter<int> ("clusEtaSize");
00097     clusPhiSize_          = pset.getParameter<int> ("clusPhiSize");
00098     ParameterLogWeighted_ = pset.getParameter<bool> ("ParameterLogWeighted");
00099     ParameterX0_          = pset.getParameter<double> ("ParameterX0");
00100     ParameterT0_barl_     = pset.getParameter<double> ("ParameterT0_barl");
00101     ParameterW0_          = pset.getParameter<double> ("ParameterW0");
00102     
00103     selePtGammaOne_       = pset.getParameter<double> ("selePtGammaOne");  
00104     selePtGammaTwo_       = pset.getParameter<double> ("selePtGammaTwo");  
00105     seleS4S9GammaOne_     = pset.getParameter<double> ("seleS4S9GammaOne");  
00106     seleS4S9GammaTwo_     = pset.getParameter<double> ("seleS4S9GammaTwo");  
00107     selePtPi0_            = pset.getParameter<double> ("selePtPi0");  
00108     selePi0Iso_           = pset.getParameter<double> ("selePi0Iso");  
00109     selePi0BeltDR_        = pset.getParameter<double> ("selePi0BeltDR");  
00110     selePi0BeltDeta_      = pset.getParameter<double> ("selePi0BeltDeta");  
00111     seleMinvMaxPi0_       = pset.getParameter<double> ("seleMinvMaxPi0");  
00112     seleMinvMinPi0_       = pset.getParameter<double> ("seleMinvMinPi0");  
00113 
00114     parameters_ = pset;
00115    
00116 
00117 }

PhotonAnalyzer::~PhotonAnalyzer (  )  [virtual]

Definition at line 121 of file PhotonAnalyzer.cc.

00121                                 {
00122 
00123 
00124 
00125 
00126 }


Member Function Documentation

void PhotonAnalyzer::analyze ( const edm::Event e,
const edm::EventSetup esup 
) [virtual]

End loop over Reco particles

Implements edm::EDAnalyzer.

Definition at line 395 of file PhotonAnalyzer.cc.

References barrelEcalHits_, conversions_cfi::conversions, EgammaValidation_Zee_cff::cut, cutStep_, endcapEcalHits_, eta, edm::AssociationMap< Tag >::find(), edm::Event::getByLabel(), h_convVtxRvsZ_, h_dCotTracks_, h_dEtaTracksAtEcal_, h_dPhiTracksAtEcal_, h_dPhiTracksAtVtx_, h_ecalSum_, h_eOverPTracks_, h_hcalSum_, h_hOverE_, h_nConv_, h_nHitsVsEta_, h_nPho_, h_nTrackIsolHollow_, h_nTrackIsolSolid_, h_phoConvEta_, h_phoConvPhi_, h_phoDistribution_, h_phoE_, h_phoEt_, h_phoEta_, h_phoPhi_, h_r9_, h_r9VsEt_, h_tkChi2_, h_trackPtSumHollow_, h_trackPtSumSolid_, i, edm::Event::id(), edm::Ref< C, T, F >::isNonnull(), isolationStrength_, edm::InputTag::label(), makePizero(), minPhoEtCut_, nEntry_, nEvt_, numberOfSteps_, phi, phiNormalization(), photonCollection_, photonProducer_, prescaleFactor_, r9, funct::sqrt(), tracks, useBinning_, and z.

00396 {
00397   
00398   using namespace edm;
00399 
00400   if (nEvt_% prescaleFactor_ ) return; 
00401   nEvt_++;  
00402   LogInfo("PhotonAnalyzer") << "PhotonAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
00403  
00404   
00405   // Get the recontructed  photons
00406   Handle<reco::PhotonCollection> photonHandle; 
00407   e.getByLabel(photonProducer_, photonCollection_ , photonHandle);
00408   if ( !photonHandle.isValid()) return;
00409   const reco::PhotonCollection photonCollection = *(photonHandle.product());
00410  
00411 
00412   // grab PhotonId objects  
00413   Handle<reco::PhotonIDAssociationCollection> photonIDMapColl;
00414   e.getByLabel("PhotonIDProd", "PhotonAssociatedID", photonIDMapColl);
00415   if ( !photonIDMapColl.isValid()) return;
00416   const reco::PhotonIDAssociationCollection *phoMap = photonIDMapColl.product();
00417 
00418 
00419   // Get EcalRecHits
00420   bool validEcalRecHits=true;
00421   Handle<EcalRecHitCollection> barrelHitHandle;
00422   EcalRecHitCollection barrelRecHits;
00423   e.getByLabel(barrelEcalHits_, barrelHitHandle);
00424   if (!barrelHitHandle.isValid()) {
00425     edm::LogError("PhotonProducer") << "Error! Can't get the product "<<barrelEcalHits_.label();
00426     validEcalRecHits=false; 
00427   }
00428   
00429   Handle<EcalRecHitCollection> endcapHitHandle;
00430   e.getByLabel(endcapEcalHits_, endcapHitHandle);
00431   EcalRecHitCollection endcapRecHits;
00432   if (!endcapHitHandle.isValid()) {
00433     edm::LogError("PhotonProducer") << "Error! Can't get the product "<<endcapEcalHits_.label();
00434     validEcalRecHits=false; 
00435   }
00436 
00437 
00438   // get the geometry from the event setup:
00439   //  esup.get<CaloGeometryRecord>().get(theCaloGeom_);
00440 
00441 
00442   // Create array to hold #photons/event information
00443   int nPho[100][3][3];
00444 
00445   for (int cut=0; cut!=100; ++cut){
00446     for (int type=0; type!=3; ++type){
00447       for (int part=0; part!=3; ++part){
00448         nPho[cut][type][part] = 0;
00449       }
00450     }
00451   }
00452 
00453 
00454   int photonCounter = 0;
00455 
00456   // Loop over all photons in event
00457   for( reco::PhotonCollection::const_iterator  iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
00458 
00459     if ((*iPho).superCluster()->energy()/cosh( (*iPho).superCluster()->eta())  < minPhoEtCut_) continue;
00460 
00461     edm::Ref<reco::PhotonCollection> photonref(photonHandle, photonCounter);
00462     photonCounter++;
00463     reco::PhotonIDAssociationCollection::const_iterator photonIter = phoMap->find(photonref);
00464     const reco::PhotonIDRef &phtn = photonIter->val;
00465 
00466 
00467     bool  phoIsInBarrel=false;
00468     bool  phoIsInEndcap=false;
00469     bool  phoIsInEndcapMinus=false;
00470     bool  phoIsInEndcapPlus=false;
00471     float etaPho = (*iPho).superCluster()->eta();
00472     if ( fabs(etaPho) <  1.479 )
00473       phoIsInBarrel=true;
00474     else {
00475       phoIsInEndcap=true;
00476       if ( etaPho < 0.0 )
00477         phoIsInEndcapMinus=true;
00478       else
00479         phoIsInEndcapPlus=true;
00480     }
00481 
00482 
00483     bool isIsolated=false;
00484     if ( isolationStrength_ == 1)  isIsolated = (phtn)->isLooseEM();
00485     else if ( isolationStrength_ == 2)  isIsolated = (phtn)->isLoosePhoton(); 
00486     else if ( isolationStrength_ == 3)  isIsolated = (phtn)->isTightPhoton();
00487  
00488     int type=0;
00489     if ( isIsolated ) type=1;
00490     if ( !isIsolated ) type=2;
00491 
00492     
00493     nEntry_++;
00494 
00495     float r9 = (phtn)->r9();
00496 
00497     for (int cut=0; cut !=numberOfSteps_; ++cut) {
00498       double Et =  (*iPho).energy()/cosh( (*iPho).superCluster()->eta());
00499 
00500       bool passesCuts = false;
00501 
00502       if ( useBinning_ && Et > cut*cutStep_ && ( Et < (cut+1)*cutStep_  | cut == numberOfSteps_-1 ) ){
00503         passesCuts = true;
00504       }
00505       else if ( !useBinning_ && Et > cut*cutStep_ ){
00506         passesCuts = true;
00507       }
00508 
00509       if (passesCuts){
00510         //filling isolation variable histograms
00511         h_nTrackIsolSolid_[cut]->Fill( (*iPho).superCluster()->eta(),(phtn)->nTrkSolidCone());
00512         h_trackPtSumSolid_[cut]->Fill((*iPho).superCluster()->eta(), (phtn)->isolationSolidTrkCone());
00513         
00514         h_nTrackIsolHollow_[cut]->Fill( (*iPho).superCluster()->eta(),(phtn)->nTrkHollowCone());
00515         h_trackPtSumHollow_[cut]->Fill((*iPho).superCluster()->eta(), (phtn)->isolationHollowTrkCone());
00516 
00517         h_ecalSum_[cut]->Fill((*iPho).superCluster()->eta(), (phtn)->isolationEcalRecHit());
00518         h_hcalSum_[cut]->Fill((*iPho).superCluster()->eta(), (phtn)->isolationHcalRecHit());
00519 
00520 
00521         //filling all photons histograms
00522         h_phoE_[cut][0][0]->Fill( (*iPho).energy() );
00523         h_phoEt_[cut][0][0]->Fill( (*iPho).energy()/ cosh( (*iPho).superCluster()->eta()) );
00524 
00525         h_r9_[cut][0][0]->Fill( r9 );
00526         h_hOverE_[cut][0][0]->Fill( (*iPho).hadronicOverEm() );
00527 
00528         nPho[cut][0][0]++;
00529         h_nConv_[cut][0][0]->Fill(float( (*iPho).conversions().size() ));
00530 
00531         h_phoDistribution_[cut][0][0]->Fill( (*iPho).superCluster()->phi(),(*iPho).superCluster()->eta() );
00532 
00533         h_phoEta_[cut][0]->Fill( (*iPho).superCluster()->eta() );
00534         h_phoPhi_[cut][0]->Fill( (*iPho).superCluster()->phi() );      
00535     
00536         h_r9VsEt_[cut][0]->Fill( (*iPho).energy()/ cosh( (*iPho).superCluster()->eta()), r9 );
00537 
00538 
00539         // iso/noniso photons histograms
00540         h_phoE_[cut][type][0]->Fill( (*iPho).energy() );
00541         h_phoEt_[cut][type][0]->Fill( (*iPho).energy()/ cosh( (*iPho).superCluster()->eta()) );
00542 
00543         h_r9_[cut][type][0]->Fill( r9 );
00544         h_hOverE_[cut][type][0]->Fill( (*iPho).hadronicOverEm() );
00545 
00546         nPho[cut][type][0]++;
00547         h_nConv_[cut][type][0]->Fill(float( (*iPho).conversions().size() ));
00548 
00549         h_phoDistribution_[cut][type][0]->Fill( (*iPho).superCluster()->phi(),(*iPho).superCluster()->eta() );
00550 
00551         h_phoEta_[cut][type]->Fill( (*iPho).superCluster()->eta() );
00552         h_phoPhi_[cut][type]->Fill( (*iPho).superCluster()->phi() );      
00553 
00554         h_r9VsEt_[cut][type]->Fill( (*iPho).energy()/ cosh( (*iPho).superCluster()->eta()), r9 );
00555 
00556 
00557         //filling both types of histograms for different ecal parts
00558         int part = 0;
00559         if ( phoIsInBarrel )
00560           part = 1;
00561         if ( phoIsInEndcap )
00562           part = 2;
00563 
00564         h_phoE_[cut][0][part]->Fill( (*iPho).energy() );
00565         h_phoEt_[cut][0][part]->Fill( (*iPho).energy()/ cosh( (*iPho).superCluster()->eta()) );
00566 
00567         h_r9_[cut][0][part]->Fill( r9 );
00568         h_hOverE_[cut][0][part]->Fill( (*iPho).hadronicOverEm() );      
00569 
00570         nPho[cut][0][part]++;
00571         h_nConv_[cut][0][part]->Fill(float( (*iPho).conversions().size() ));
00572 
00573         if ( phoIsInBarrel )  h_phoDistribution_[cut][0][1]->Fill( (*iPho).superCluster()->phi(),(*iPho).superCluster()->eta() );
00574         if ( phoIsInEndcapMinus )  h_phoDistribution_[cut][0][2]->Fill( (*iPho).superCluster()->x(),(*iPho).superCluster()->y() );
00575         if ( phoIsInEndcapPlus )  h_phoDistribution_[cut][0][3]->Fill( (*iPho).superCluster()->x(),(*iPho).superCluster()->y() );
00576 
00577 
00578         h_phoE_[cut][type][part]->Fill( (*iPho).energy() );
00579         h_phoEt_[cut][type][part]->Fill( (*iPho).energy()/ cosh( (*iPho).superCluster()->eta()) );
00580 
00581         h_r9_[cut][type][part]->Fill( r9 );
00582         h_hOverE_[cut][type][part]->Fill( (*iPho).hadronicOverEm() );
00583 
00584         nPho[cut][type][part]++;
00585         h_nConv_[cut][type][part]->Fill(float( (*iPho).conversions().size() ));
00586 
00587         if ( phoIsInBarrel )  h_phoDistribution_[cut][type][1]->Fill( (*iPho).superCluster()->phi(),(*iPho).superCluster()->eta() );
00588         if ( phoIsInEndcapMinus )  h_phoDistribution_[cut][type][2]->Fill( (*iPho).superCluster()->x(),(*iPho).superCluster()->y() );
00589         if ( phoIsInEndcapPlus )  h_phoDistribution_[cut][type][3]->Fill( (*iPho).superCluster()->x(),(*iPho).superCluster()->y() );
00590 
00591         //loop over conversions
00592 
00593         std::vector<reco::ConversionRef> conversions = (*iPho).conversions();
00594         for (unsigned int iConv=0; iConv<conversions.size(); iConv++) {
00595 
00596           reco::ConversionRef aConv=conversions[iConv];
00597 
00598           h_phoConvEta_[cut][0]->Fill( conversions[iConv]->caloCluster()[0]->eta()  );
00599           h_phoConvPhi_[cut][0]->Fill( conversions[iConv]->caloCluster()[0]->phi()  );  
00600           h_phoConvEta_[cut][type]->Fill( conversions[iConv]->caloCluster()[0]->eta()  );
00601           h_phoConvPhi_[cut][type]->Fill( conversions[iConv]->caloCluster()[0]->phi()  );  
00602 
00603 
00604           if ( conversions[iConv]->conversionVertex().isValid() ) {
00605 
00606             h_convVtxRvsZ_[cut][0] ->Fill ( fabs (conversions[iConv]->conversionVertex().position().z() ),  
00607                                                sqrt(conversions[iConv]->conversionVertex().position().perp2())  ) ;
00608             h_convVtxRvsZ_[cut][type] ->Fill ( fabs (conversions[iConv]->conversionVertex().position().z() ),  
00609                                                sqrt(conversions[iConv]->conversionVertex().position().perp2())  ) ;
00610           }
00611 
00612 
00613           std::vector<reco::TrackRef> tracks = conversions[iConv]->tracks();
00614 
00615           for (unsigned int i=0; i<tracks.size(); i++) {
00616             h_tkChi2_[cut][0] ->Fill (tracks[i]->normalizedChi2()) ; 
00617             h_tkChi2_[cut][type] ->Fill (tracks[i]->normalizedChi2()) ; 
00618             h_nHitsVsEta_[cut][0]->Fill(  conversions[iConv]->caloCluster()[0]->eta(),   float(tracks[i]->numberOfValidHits() ) );
00619             h_nHitsVsEta_[cut][type]->Fill(  conversions[iConv]->caloCluster()[0]->eta(),   float(tracks[i]->numberOfValidHits() ) );
00620           }
00621 
00622           float  DPhiTracksAtVtx = -99;
00623           float  dPhiTracksAtEcal= -99;
00624           float  dEtaTracksAtEcal= -99;
00625 
00626 
00627           if ( tracks.size() > 1 ) {
00628             float phiTk1= tracks[0]->innerMomentum().phi();
00629             float phiTk2= tracks[1]->innerMomentum().phi();
00630             DPhiTracksAtVtx = phiTk1-phiTk2;
00631             DPhiTracksAtVtx = phiNormalization( DPhiTracksAtVtx );
00632           }
00633 
00634 
00635           if (aConv->bcMatchingWithTracks()[0].isNonnull() && aConv->bcMatchingWithTracks()[1].isNonnull() ) {
00636             float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
00637             float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
00638             float recoEta1 = aConv->ecalImpactPosition()[0].eta();
00639             float recoEta2 = aConv->ecalImpactPosition()[1].eta();
00640 
00641             recoPhi1 = phiNormalization(recoPhi1);
00642             recoPhi2 = phiNormalization(recoPhi2);
00643 
00644             dPhiTracksAtEcal = recoPhi1 -recoPhi2;
00645             dPhiTracksAtEcal = phiNormalization( dPhiTracksAtEcal );
00646             dEtaTracksAtEcal = recoEta1 -recoEta2;
00647 
00648           }
00649 
00650           h_eOverPTracks_[cut][0][0] ->Fill( conversions[iConv]->EoverP() ) ;
00651           h_eOverPTracks_[cut][type][0] ->Fill( conversions[iConv]->EoverP() ) ;
00652           h_dCotTracks_[cut][0][0] ->Fill ( conversions[iConv]->pairCotThetaSeparation() );       
00653           h_dCotTracks_[cut][type][0] ->Fill ( conversions[iConv]->pairCotThetaSeparation() );    
00654           h_dPhiTracksAtVtx_[cut][0][0]->Fill( DPhiTracksAtVtx);
00655           h_dPhiTracksAtVtx_[cut][type][0]->Fill( DPhiTracksAtVtx);
00656           h_dPhiTracksAtEcal_[cut][0][0]->Fill( fabs(dPhiTracksAtEcal));
00657           h_dPhiTracksAtEcal_[cut][type][0]->Fill( fabs(dPhiTracksAtEcal));
00658           h_dEtaTracksAtEcal_[cut][0][0]->Fill( dEtaTracksAtEcal);
00659           h_dEtaTracksAtEcal_[cut][type][0]->Fill( dEtaTracksAtEcal);
00660           
00661           //filling both types of histograms for different ecal parts
00662           int part = 0;
00663           if ( phoIsInBarrel ) part = 1;
00664           if ( phoIsInEndcap ) part = 2;
00665 
00666           h_eOverPTracks_[cut][0][part] ->Fill( conversions[iConv]->EoverP() ) ;
00667           h_eOverPTracks_[cut][type][part] ->Fill( conversions[iConv]->EoverP() ) ;
00668           h_dCotTracks_[cut][0][part] ->Fill ( conversions[iConv]->pairCotThetaSeparation() );    
00669           h_dCotTracks_[cut][type][part] ->Fill ( conversions[iConv]->pairCotThetaSeparation() );         
00670           h_dPhiTracksAtVtx_[cut][0][part]->Fill( DPhiTracksAtVtx);
00671           h_dPhiTracksAtVtx_[cut][type][part]->Fill( DPhiTracksAtVtx);
00672           h_dPhiTracksAtEcal_[cut][0][part]->Fill( fabs(dPhiTracksAtEcal));
00673           h_dPhiTracksAtEcal_[cut][type][part]->Fill( fabs(dPhiTracksAtEcal));
00674           h_dEtaTracksAtEcal_[cut][0][part]->Fill( dEtaTracksAtEcal);
00675           h_dEtaTracksAtEcal_[cut][type][part]->Fill( dEtaTracksAtEcal);
00676 
00677 
00678 
00679         }//end loop over conversions
00680 
00681       }
00682     }
00683     
00684   }
00685     
00686   //filling number of photons per event histograms
00687   for (int cut=0; cut !=numberOfSteps_; ++cut) {
00688     for(int type=0;type!=3;++type){
00689       for(int part=0;part!=3;++part){
00690         h_nPho_[cut][type][part]-> Fill (float(nPho[cut][type][part]));
00691       }
00692     }
00693   }
00694 
00695   if (validEcalRecHits) makePizero(esup,  barrelHitHandle, endcapHitHandle);
00696 
00697 
00698 
00699 
00700 }

void PhotonAnalyzer::beginJob ( const edm::EventSetup setup  )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 129 of file PhotonAnalyzer.cc.

References DQMStore::book1D(), DQMStore::book2D(), currentFolder_, EgammaValidation_Zee_cff::cut, cutStep_, dbe_, gen_hydjet_hard_muon_trigger_cfg::etaMax, gen_hydjet_hard_muon_trigger_cfg::etaMin, edm::ParameterSet::getParameter(), h_convVtxRvsZ_, h_convVtxRvsZ_isol_, h_dCotTracks_, h_dCotTracks_isol_, h_dCotTracks_part_, h_dEtaTracksAtEcal_, h_dEtaTracksAtEcal_isol_, h_dEtaTracksAtEcal_part_, h_dPhiTracksAtEcal_, h_dPhiTracksAtEcal_isol_, h_dPhiTracksAtEcal_part_, h_dPhiTracksAtVtx_, h_dPhiTracksAtVtx_isol_, h_dPhiTracksAtVtx_part_, h_ecalSum_, h_eOverPTracks_, h_eOverPTracks_isol_, h_eOverPTracks_part_, h_hcalSum_, h_hOverE_, h_hOverE_isol_, h_hOverE_part_, h_nConv_, h_nConv_isol_, h_nConv_part_, h_nHitsVsEta_, h_nHitsVsEta_isol_, h_nPho_, h_nPho_isol_, h_nPho_part_, h_nTrackIsolHollow_, h_nTrackIsolSolid_, h_phoConvEta_, h_phoConvEta_isol_, h_phoConvPhi_, h_phoConvPhi_isol_, h_phoDistribution_, h_phoDistribution_isol_, h_phoDistribution_part_, h_phoE_, h_phoE_isol_, h_phoE_part_, h_phoEt_, h_phoEt_isol_, h_phoEt_part_, h_phoEta_, h_phoEta_isol_, h_phoPhi_, h_phoPhi_isol_, h_r9_, h_r9_isol_, h_r9_part_, h_r9VsEt_, h_r9VsEt_isol_, h_tkChi2_, h_tkChi2_isol_, h_trackPtSumHollow_, h_trackPtSumSolid_, hIsoPi0EB_, hMinvPi0EB_, hPt1Pi0EB_, hPt2Pi0EB_, hPtPi0EB_, nEntry_, nEvt_, numberOfSteps_, p_ecalSum_, p_efficiencyVsEt_, p_efficiencyVsEta_, p_hcalSum_, p_nHitsVsEta_, p_nHitsVsEta_isol_, p_nTrackIsolHollow_, p_nTrackIsolSolid_, p_r9VsEt_, p_r9VsEt_isol_, p_trackPtSumHollow_, p_trackPtSumSolid_, parameters_, MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), DQMStore::setVerbose(), DQMStore::showDirStructure(), and verbosity_.

00130 {
00131 
00132 
00133   nEvt_=0;
00134   nEntry_=0;
00135   
00136   dbe_ = 0;
00137   dbe_ = edm::Service<DQMStore>().operator->();
00138   
00139 
00140 
00141  if (dbe_) {
00142     if (verbosity_ > 0 ) {
00143       dbe_->setVerbose(1);
00144     } else {
00145       dbe_->setVerbose(0);
00146     }
00147   }
00148   if (dbe_) {
00149     if (verbosity_ > 0 ) dbe_->showDirStructure();
00150   }
00151 
00152 
00153 
00154   double eMin = parameters_.getParameter<double>("eMin");
00155   double eMax = parameters_.getParameter<double>("eMax");
00156   int eBin = parameters_.getParameter<int>("eBin");
00157 
00158   double etMin = parameters_.getParameter<double>("etMin");
00159   double etMax = parameters_.getParameter<double>("etMax");
00160   int etBin = parameters_.getParameter<int>("etBin");
00161 
00162   double etaMin = parameters_.getParameter<double>("etaMin");
00163   double etaMax = parameters_.getParameter<double>("etaMax");
00164   int etaBin = parameters_.getParameter<int>("etaBin");
00165  
00166   double phiMin = parameters_.getParameter<double>("phiMin");
00167   double phiMax = parameters_.getParameter<double>("phiMax");
00168   int    phiBin = parameters_.getParameter<int>("phiBin");
00169  
00170  
00171   double r9Min = parameters_.getParameter<double>("r9Min"); 
00172   double r9Max = parameters_.getParameter<double>("r9Max"); 
00173   int r9Bin = parameters_.getParameter<int>("r9Bin");
00174 
00175   double dPhiTracksMin = parameters_.getParameter<double>("dPhiTracksMin"); 
00176   double dPhiTracksMax = parameters_.getParameter<double>("dPhiTracksMax"); 
00177   int dPhiTracksBin = parameters_.getParameter<int>("dPhiTracksBin");
00178 
00179   double dEtaTracksMin = parameters_.getParameter<double>("dEtaTracksMin"); 
00180   double dEtaTracksMax = parameters_.getParameter<double>("dEtaTracksMax"); 
00181   int dEtaTracksBin = parameters_.getParameter<int>("dEtaTracksBin");
00182 
00183 
00184   vector<string> parts;
00185   parts.push_back("AllEcal");
00186   parts.push_back("Barrel");
00187   parts.push_back("Endcaps");
00188 
00189 
00190   vector<string> types;
00191   types.push_back("All");
00192   types.push_back("Isolated");
00193   types.push_back("Nonisolated");
00194 
00195   //booking all histograms
00196 
00197   if (dbe_) {  
00198 
00199 
00200     for(int cut = 0; cut != numberOfSteps_; ++cut){   //looping over Et cut values
00201      
00202 
00203       // Isolation Variable infos
00204      
00205       currentFolder_.str("");
00206       currentFolder_ << "Egamma/PhotonAnalyzer/IsolationVariables/Et above " << cut*cutStep_ << " GeV";
00207       dbe_->setCurrentFolder(currentFolder_.str());
00208 
00209       h_nTrackIsolSolid_.push_back(dbe_->book2D("nIsoTracksSolid2D","Avg Number Of Tracks in the Solid Iso Cone",etaBin,etaMin, etaMax,10,-0.5, 9.5));
00210       h_trackPtSumSolid_.push_back(dbe_->book2D("isoPtSumSolid2D","Avg Tracks Pt Sum in the Solid Iso Cone",etaBin,etaMin, etaMax,100,0., 20.));
00211       h_nTrackIsolHollow_.push_back(dbe_->book2D("nIsoTracksHollow2D","Avg Number Of Tracks in the Hollow Iso Cone",etaBin,etaMin, etaMax,10,-0.5, 9.5));
00212       h_trackPtSumHollow_.push_back(dbe_->book2D("isoPtSumHollow2D","Avg Tracks Pt Sum in the Hollow Iso Cone",etaBin,etaMin, etaMax,100,0., 20.));
00213       h_ecalSum_.push_back(dbe_->book2D("ecalSum2D","Avg Ecal Sum in the Iso Cone",etaBin,etaMin, etaMax,100,0., 20.));
00214       h_hcalSum_.push_back(dbe_->book2D("hcalSum2D","Avg Hcal Sum in the Iso Cone",etaBin,etaMin, etaMax,100,0., 20.));
00215       p_nTrackIsolSolid_.push_back(dbe_->book1D("nIsoTracksSolid","Avg Number Of Tracks in the Solid Iso Cone",etaBin,etaMin, etaMax));
00216       p_trackPtSumSolid_.push_back(dbe_->book1D("isoPtSumSolid","Avg Tracks Pt Sum in the Solid Iso Cone",etaBin,etaMin, etaMax));
00217       p_nTrackIsolHollow_.push_back(dbe_->book1D("nIsoTracksHollow","Avg Number Of Tracks in the Hollow Iso Cone",etaBin,etaMin, etaMax));
00218       p_trackPtSumHollow_.push_back(dbe_->book1D("isoPtSumHollow","Avg Tracks Pt Sum in the Hollow Iso Cone",etaBin,etaMin, etaMax));
00219       p_ecalSum_.push_back(dbe_->book1D("ecalSum","Avg Ecal Sum in the Iso Cone",etaBin,etaMin, etaMax));
00220       p_hcalSum_.push_back(dbe_->book1D("hcalSum","Avg Hcal Sum in the Iso Cone",etaBin,etaMin, etaMax));
00221    
00222       //Efficiency histograms
00223 
00224       p_efficiencyVsEta_.push_back(dbe_->book1D("EfficiencyVsEta","Fraction of isolated Photons  vs. Eta",etaBin,etaMin, etaMax));
00225       p_efficiencyVsEt_.push_back(dbe_->book1D("EfficiencyVsEt","Fraction of isolated Photons vs. Et",etBin,etMin, etMax));
00226 
00227 
00228       // Photon histograms
00229 
00230       for(int type=0;type!=3;++type){ //looping over isolation type
00231         
00232         currentFolder_.str("");
00233         currentFolder_ << "Egamma/PhotonAnalyzer/" << types[type] << "Photons/Et above " << cut*cutStep_ << " GeV";
00234         dbe_->setCurrentFolder(currentFolder_.str());
00235 
00236         for(int part=0;part!=3;++part){ //loop over different parts of the ecal
00237 
00238           h_phoE_part_.push_back(dbe_->book1D("phoE"+parts[part],types[type]+" Photon Energy: "+parts[part], eBin,eMin, eMax));
00239           h_phoEt_part_.push_back(dbe_->book1D("phoEt"+parts[part],types[type]+" Photon Transverse Energy: "+parts[part], etBin,etMin, etMax));
00240           h_r9_part_.push_back(dbe_->book1D("r9"+parts[part],types[type]+" Photon r9: "+parts[part],r9Bin,r9Min, r9Max));
00241           h_hOverE_part_.push_back(dbe_->book1D("hOverE"+parts[part],types[type]+" Photon H/E: "+parts[part],r9Bin,r9Min, 1));
00242           h_nPho_part_.push_back(dbe_->book1D("nPho"+parts[part],"Number of "+types[type]+" Photons per Event: "+parts[part], 10,-0.5,9.5));
00243         }
00244 
00245         h_phoDistribution_part_.push_back(dbe_->book2D("DistributionAllEcal","Distribution of "+types[type]+" Photons in Eta/Phi: AllEcal",phiBin,phiMin,phiMax,etaBin,-2.5,2.5));
00246         h_phoDistribution_part_.push_back(dbe_->book2D("DistributionBarrel","Distribution of "+types[type]+" Photons in Eta/Phi: Barrel",360,phiMin,phiMax,170,-1.5,1.5));
00247         h_phoDistribution_part_.push_back(dbe_->book2D("DistributionEndcapMinus","Distribution of "+types[type]+" Photons in X/Y: EndcapMinus",100,-150,150,100,-150,150));
00248         h_phoDistribution_part_.push_back(dbe_->book2D("DistributionEndcapPlus","Distribution of "+types[type]+" Photons in X/Y: EndcapPlus",100,-150,150,100,-150,150));
00249 
00250         h_phoE_isol_.push_back(h_phoE_part_);
00251         h_phoE_part_.clear();
00252         h_phoEt_isol_.push_back(h_phoEt_part_);
00253         h_phoEt_part_.clear();
00254         h_r9_isol_.push_back(h_r9_part_);
00255         h_r9_part_.clear();
00256         h_hOverE_isol_.push_back(h_hOverE_part_);
00257         h_hOverE_part_.clear();
00258         h_nPho_isol_.push_back(h_nPho_part_);
00259         h_nPho_part_.clear();
00260 
00261         h_phoDistribution_isol_.push_back(h_phoDistribution_part_);
00262         h_phoDistribution_part_.clear();
00263 
00264         h_phoEta_isol_.push_back(dbe_->book1D("phoEta",types[type]+" Photon Eta ",etaBin,etaMin, etaMax)) ;
00265         h_phoPhi_isol_.push_back(dbe_->book1D("phoPhi",types[type]+" Photon Phi ",phiBin,phiMin,phiMax)) ;
00266         h_r9VsEt_isol_.push_back(dbe_->book2D("r9VsEt2D",types[type]+" Photon r9 vs. Transverse Energy",etBin,etMin,etMax,r9Bin,r9Min,r9Max));
00267         p_r9VsEt_isol_.push_back(dbe_->book1D("r9VsEt",types[type]+" Photon r9 vs. Transverse Energy",etBin,etMin,etMax));
00268 
00269 
00270       }
00271 
00272       h_phoE_.push_back(h_phoE_isol_);
00273       h_phoE_isol_.clear();
00274       h_phoEt_.push_back(h_phoEt_isol_);
00275       h_phoEt_isol_.clear();
00276       h_r9_.push_back(h_r9_isol_);
00277       h_r9_isol_.clear();
00278       h_hOverE_.push_back(h_hOverE_isol_);
00279       h_hOverE_isol_.clear();
00280       h_nPho_.push_back(h_nPho_isol_);
00281       h_nPho_isol_.clear();
00282       
00283       h_phoDistribution_.push_back(h_phoDistribution_isol_);
00284       h_phoDistribution_isol_.clear();
00285             
00286       h_phoEta_.push_back(h_phoEta_isol_);
00287       h_phoEta_isol_.clear();
00288       h_phoPhi_.push_back(h_phoPhi_isol_);
00289       h_phoPhi_isol_.clear();
00290       h_r9VsEt_.push_back(h_r9VsEt_isol_);
00291       h_r9VsEt_isol_.clear();
00292       p_r9VsEt_.push_back(p_r9VsEt_isol_);
00293       p_r9VsEt_isol_.clear();
00294       
00295    
00296     
00297       //conversion plots
00298 
00299       for(int type=0;type!=3;++type){ //looping over isolation type
00300 
00301         currentFolder_.str(""); 
00302         currentFolder_ << "Egamma/PhotonAnalyzer/" << types[type] << "Photons/Et above " << cut*cutStep_ << " GeV/Conversions";
00303         dbe_->setCurrentFolder(currentFolder_.str());
00304 
00305         for(int part=0;part!=3;++part){ //loop over different parts of the ecal
00306 
00307           h_nConv_part_.push_back(dbe_->book1D("nConv"+parts[part],"Number Of Conversions per Event:  "+parts[part] ,10,-0.5, 9.5));
00308           h_eOverPTracks_part_.push_back(dbe_->book1D("eOverPTracks"+parts[part],"E/P of Conversions: "+parts[part] ,100, 0., 5.));
00309           
00310           h_dPhiTracksAtVtx_part_.push_back(dbe_->book1D("dPhiTracksAtVtx"+parts[part], "  #delta#phi of Conversion Tracks at Vertex: "+parts[part],dPhiTracksBin,dPhiTracksMin,dPhiTracksMax));
00311           h_dCotTracks_part_.push_back(dbe_->book1D("dCotTracks"+parts[part],"#delta cotg(#Theta) of Conversion Tracks: "+parts[part],dEtaTracksBin,dEtaTracksMin,dEtaTracksMax)); 
00312 
00313           h_dPhiTracksAtEcal_part_.push_back(dbe_->book1D("dPhiTracksAtEcal"+parts[part], "  #delta#phi of Conversion Tracks at Ecal: "+parts[part],dPhiTracksBin,0.,dPhiTracksMax)); 
00314           h_dEtaTracksAtEcal_part_.push_back(dbe_->book1D("dEtaTracksAtEcal"+parts[part], "  #delta#eta of Conversion Tracks at Ecal: "+parts[part],dEtaTracksBin,dEtaTracksMin,dEtaTracksMax)); 
00315         }
00316 
00317         h_nConv_isol_.push_back(h_nConv_part_);
00318         h_nConv_part_.clear();
00319         h_eOverPTracks_isol_.push_back(h_eOverPTracks_part_);
00320         h_eOverPTracks_part_.clear();
00321         h_dPhiTracksAtVtx_isol_.push_back(h_dPhiTracksAtVtx_part_);
00322         h_dPhiTracksAtVtx_part_.clear();
00323         h_dCotTracks_isol_.push_back(h_dCotTracks_part_);
00324         h_dCotTracks_part_.clear();
00325         h_dPhiTracksAtEcal_isol_.push_back(h_dPhiTracksAtEcal_part_);
00326         h_dPhiTracksAtEcal_part_.clear();
00327         h_dEtaTracksAtEcal_isol_.push_back(h_dEtaTracksAtEcal_part_);
00328         h_dEtaTracksAtEcal_part_.clear();
00329 
00330 
00331         h_phoConvEta_isol_.push_back(dbe_->book1D("phoConvEta",types[type]+" Converted Photon Eta ",etaBin,etaMin, etaMax)) ;
00332         h_phoConvPhi_isol_.push_back(dbe_->book1D("phoConvPhi",types[type]+" Converted Photon Phi ",phiBin,phiMin,phiMax)) ;
00333         h_convVtxRvsZ_isol_.push_back(dbe_->book2D("convVtxRvsZ",types[type]+" Photon Reco conversion vtx position",100, 0., 280.,200,0., 120.));
00334         h_nHitsVsEta_isol_.push_back(dbe_->book2D("nHitsVsEta2D",types[type]+" Photons: Tracks from conversions: Mean Number of  Hits vs Eta",etaBin,etaMin, etaMax,etaBin,0, 16));
00335         p_nHitsVsEta_isol_.push_back(dbe_->book1D("nHitsVsEta",types[type]+" Photons: Tracks from conversions: Mean Number of  Hits vs Eta",etaBin,etaMin, etaMax));    
00336         h_tkChi2_isol_.push_back(dbe_->book1D("tkChi2",types[type]+" Photons: Tracks from conversions: #chi^{2} of all tracks", 100, 0., 20.0));  
00337       }
00338 
00339       h_nConv_.push_back(h_nConv_isol_);
00340       h_nConv_isol_.clear();
00341       h_eOverPTracks_.push_back(h_eOverPTracks_isol_);
00342       h_eOverPTracks_isol_.clear();
00343       h_dPhiTracksAtVtx_.push_back(h_dPhiTracksAtVtx_isol_);
00344       h_dPhiTracksAtVtx_isol_.clear();
00345       h_dCotTracks_.push_back(h_dCotTracks_isol_);
00346       h_dCotTracks_isol_.clear();
00347       h_dPhiTracksAtEcal_.push_back(h_dPhiTracksAtEcal_isol_);
00348       h_dPhiTracksAtEcal_isol_.clear();  
00349       h_dEtaTracksAtEcal_.push_back(h_dEtaTracksAtEcal_isol_);
00350       h_dEtaTracksAtEcal_isol_.clear();
00351     
00352       h_phoConvEta_.push_back(h_phoConvEta_isol_);
00353       h_phoConvEta_isol_.clear();
00354       h_phoConvPhi_.push_back(h_phoConvPhi_isol_);
00355       h_phoConvPhi_isol_.clear();
00356       h_convVtxRvsZ_.push_back(h_convVtxRvsZ_isol_);
00357       h_convVtxRvsZ_isol_.clear();
00358       h_tkChi2_.push_back(h_tkChi2_isol_);
00359       h_tkChi2_isol_.clear();
00360       h_nHitsVsEta_.push_back(h_nHitsVsEta_isol_);
00361       h_nHitsVsEta_isol_.clear(); 
00362       p_nHitsVsEta_.push_back(p_nHitsVsEta_isol_);
00363       p_nHitsVsEta_isol_.clear();
00364   
00365     }
00366 
00367 
00368     currentFolder_.str("");
00369     currentFolder_ << "Egamma/PhotonAnalyzer/PiZero";
00370     dbe_->setCurrentFolder(currentFolder_.str());
00371     
00372     hMinvPi0EB_ = dbe_->book1D("Pi0InvmassEB","Pi0 Invariant Mass in EB",100,0.,0.5);
00373     hMinvPi0EB_->setAxisTitle("Inv Mass [GeV] ",1);
00374 
00375     hPt1Pi0EB_ = dbe_->book1D("Pt1Pi0EB","Pt 1st most energetic Pi0 photon in EB",100,0.,20.);
00376     hPt1Pi0EB_->setAxisTitle("1st photon Pt [GeV] ",1);
00377     
00378     hPt2Pi0EB_ = dbe_->book1D("Pt2Pi0EB","Pt 2nd most energetic Pi0 photon in EB",100,0.,20.);
00379     hPt2Pi0EB_->setAxisTitle("2nd photon Pt [GeV] ",1);
00380     
00381     hPtPi0EB_ = dbe_->book1D("PtPi0EB","Pi0 Pt in EB",100,0.,20.);
00382     hPtPi0EB_->setAxisTitle("Pi0 Pt [GeV] ",1);
00383     
00384     hIsoPi0EB_ = dbe_->book1D("IsoPi0EB","Pi0 Iso in EB",50,0.,1.);
00385     hIsoPi0EB_->setAxisTitle("Pi0 Iso",1);
00386     
00387     
00388   }
00389  
00390  
00391 }

void PhotonAnalyzer::dividePlots ( MonitorElement dividend,
MonitorElement numerator,
MonitorElement denominator 
) [private]

Definition at line 1075 of file PhotonAnalyzer.cc.

References err, MonitorElement::getBinContent(), MonitorElement::getNbinsX(), j, MonitorElement::setBinContent(), MonitorElement::setBinError(), funct::sqrt(), and value.

Referenced by endJob().

01075                                                                                                                  {
01076   double value,err;
01077   for (int j=1; j<=numerator->getNbinsX(); j++){
01078     if (denominator->getBinContent(j)!=0){
01079       value = ((double) numerator->getBinContent(j))/((double) denominator->getBinContent(j));
01080       err = sqrt( value*(1-value) / ((double) denominator->getBinContent(j)) );
01081       dividend->setBinContent(j, value);
01082       dividend->setBinError(j,err);
01083     }
01084     else {
01085       dividend->setBinContent(j, 0);
01086     }
01087   }
01088 }

void PhotonAnalyzer::doProfileX ( MonitorElement th2m,
MonitorElement me 
) [private]

Definition at line 1068 of file PhotonAnalyzer.cc.

References doProfileX(), and MonitorElement::getTH2F().

01068                                                                          {
01069   doProfileX(th2m->getTH2F(), me);
01070 }

void PhotonAnalyzer::doProfileX ( TH2 *  th2,
MonitorElement me 
) [private]

Definition at line 1055 of file PhotonAnalyzer.cc.

References Exception, MonitorElement::getNbinsX(), h1, MonitorElement::setBinContent(), and MonitorElement::setBinError().

Referenced by doProfileX(), and endJob().

01055                                                             {
01056   if (th2->GetNbinsX()==me->getNbinsX()){
01057     TH1F * h1 = (TH1F*) th2->ProfileX();
01058     for (int bin=0;bin!=h1->GetNbinsX();bin++){
01059       me->setBinContent(bin+1,h1->GetBinContent(bin+1));
01060       me->setBinError(bin+1,h1->GetBinError(bin+1));
01061     }
01062     delete h1;
01063   } else {
01064     throw cms::Exception("PhotonAnalyzer") << "Different number of bins!";
01065   }
01066 }

void PhotonAnalyzer::endJob ( void   )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 952 of file PhotonAnalyzer.cc.

References currentFolder_, EgammaValidation_Zee_cff::cut, cutStep_, dbe_, dividePlots(), doProfileX(), edm::getName(), edm::ParameterSet::getParameter(), h_ecalSum_, h_hcalSum_, h_nHitsVsEta_, h_nTrackIsolHollow_, h_nTrackIsolSolid_, h_phoEt_, h_phoEta_, h_r9VsEt_, h_trackPtSumHollow_, h_trackPtSumSolid_, nEvt_, numberOfSteps_, iggi_31X_cfg::outputFileName, p_ecalSum_, p_efficiencyVsEt_, p_efficiencyVsEta_, p_hcalSum_, p_nHitsVsEta_, p_nTrackIsolHollow_, p_nTrackIsolSolid_, p_r9VsEt_, p_trackPtSumHollow_, p_trackPtSumSolid_, parameters_, DQMStore::removeElement(), DQMStore::save(), and DQMStore::setCurrentFolder().

00953 {
00954 
00955   vector<string> types;
00956   types.push_back("All");
00957   types.push_back("Isolated");
00958   types.push_back("Nonisolated");
00959 
00960 
00961   for (int cut=0; cut !=numberOfSteps_; ++cut) {
00962 
00963     //making efficiency plots
00964     
00965     MonitorElement * EtaNum = h_phoEta_[cut][1];
00966     MonitorElement * EtaDen = h_phoEta_[cut][0];
00967     dividePlots(p_efficiencyVsEta_[cut],EtaNum,EtaDen);
00968     
00969     MonitorElement * EtNum = h_phoEt_[cut][1][0];
00970     MonitorElement * EtDen = h_phoEt_[cut][0][0];
00971     dividePlots(p_efficiencyVsEt_[cut],EtNum,EtDen);
00972     
00973 
00974     //making isolation variable profiles
00975 
00976     doProfileX( h_nTrackIsolSolid_[cut], p_nTrackIsolSolid_[cut]);
00977     doProfileX( h_trackPtSumSolid_[cut], p_trackPtSumSolid_[cut]);
00978     doProfileX( h_nTrackIsolHollow_[cut], p_nTrackIsolHollow_[cut]);
00979     doProfileX( h_trackPtSumHollow_[cut], p_trackPtSumHollow_[cut]);
00980     doProfileX( h_ecalSum_[cut], p_ecalSum_[cut]);
00981     doProfileX( h_hcalSum_[cut], p_hcalSum_[cut]);
00982     
00983     
00984     //removing unneeded plots
00985 
00986     currentFolder_.str("");
00987     currentFolder_ << "Egamma/PhotonAnalyzer/IsolationVariables/Et above " << cut*cutStep_ << " GeV";
00988     dbe_->setCurrentFolder(currentFolder_.str());
00989     
00990     dbe_->removeElement(h_nTrackIsolSolid_[cut]->getName());
00991     dbe_->removeElement(h_trackPtSumSolid_[cut]->getName());
00992     dbe_->removeElement(h_nTrackIsolHollow_[cut]->getName());
00993     dbe_->removeElement(h_trackPtSumHollow_[cut]->getName());
00994     dbe_->removeElement(h_ecalSum_[cut]->getName());
00995     dbe_->removeElement(h_hcalSum_[cut]->getName());
00996     
00997     for(int type=0;type!=3;++type){
00998       doProfileX( h_nHitsVsEta_[cut][type], p_nHitsVsEta_[cut][type]);
00999       doProfileX( h_r9VsEt_[cut][type], p_r9VsEt_[cut][type]);
01000       currentFolder_.str("");
01001       currentFolder_ << "Egamma/PhotonAnalyzer/" << types[type] << "Photons/Et above " << cut*cutStep_ << " GeV";
01002       dbe_->setCurrentFolder(currentFolder_.str());
01003       dbe_->removeElement("r9VsEt2D");
01004       currentFolder_ << "/Conversions";
01005       dbe_->setCurrentFolder(currentFolder_.str());
01006       dbe_->removeElement("nHitsVsEta2D");
01007     }
01008     
01009     
01010 
01011 
01012   }
01013 
01014 
01015 
01016 
01017 
01018 
01019   bool outputMEsInRootFile = parameters_.getParameter<bool>("OutputMEsInRootFile");
01020   std::string outputFileName = parameters_.getParameter<std::string>("OutputFileName");
01021   if(outputMEsInRootFile){
01022     dbe_->save(outputFileName);
01023   }
01024   
01025   edm::LogInfo("PhotonAnalyzer") << "Analyzed " << nEvt_  << "\n";
01026  
01027    
01028   return ;
01029 }

void PhotonAnalyzer::makePizero ( const edm::EventSetup es,
const edm::Handle< EcalRecHitCollection eb,
const edm::Handle< EcalRecHitCollection ee 
) [private]

Definition at line 702 of file PhotonAnalyzer.cc.

References PositionCalc::Calculate_Location(), clusEtaSize_, clusPhiSize_, clusSeedThr_, funct::cos(), GenMuonPlsPt100GeV_cfg::cout, DetId::Ecal, EcalBarrel, EcalPreshower, lat::endl(), relval_parameters_module::energy, funct::exp(), MonitorElement::Fill(), edm::EventSetup::get(), CaloSubdetectorTopology::getWindow(), hIsoPi0EB_, hMinvPi0EB_, hPt1Pi0EB_, hPt2Pi0EB_, hPtPi0EB_, i, id, EBDetId::ieta(), EBDetId::iphi(), j, k, ParameterLogWeighted_, ParameterT0_barl_, ParameterW0_, ParameterX0_, edm::Handle< T >::product(), seleMinvMaxPi0_, seleMinvMinPi0_, selePi0BeltDeta_, selePi0BeltDR_, selePi0Iso_, selePtGammaOne_, selePtGammaTwo_, selePtPi0_, seleS4S9GammaOne_, seleS4S9GammaTwo_, seleXtalMinEnergy_, funct::sin(), python::multivaluedict::sort(), funct::sqrt(), and muonGeometry::TVector3().

Referenced by analyze().

00702                                                                                                                                                    {
00703 
00704   const EcalRecHitCollection *hitCollection_p = rhEB.product();
00705   
00706   edm::ESHandle<CaloGeometry> geoHandle;
00707   es.get<CaloGeometryRecord>().get(geoHandle);     
00708 
00709   edm::ESHandle<CaloTopology> theCaloTopology;
00710   es.get<CaloTopologyRecord>().get(theCaloTopology);
00711 
00712  
00713   const CaloSubdetectorGeometry *geometry_p;    
00714   const CaloSubdetectorTopology *topology_p;
00715   const CaloSubdetectorGeometry *geometryES_p;
00716   geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal,EcalBarrel);
00717   geometryES_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
00718   // Initialize the Position Calc
00719   std::map<std::string,double> providedParameters;  
00720   providedParameters.insert(std::make_pair("LogWeighted",ParameterLogWeighted_));
00721   providedParameters.insert(std::make_pair("X0",ParameterX0_));
00722   providedParameters.insert(std::make_pair("T0_barl",ParameterT0_barl_));
00723   providedParameters.insert(std::make_pair("W0",ParameterW0_));
00724   PositionCalc posCalculator_ = PositionCalc(providedParameters);
00725   //
00726 
00727   std::map<DetId, EcalRecHit>  recHitsEB_map;
00728 
00729  //
00730   std::vector<EcalRecHit> seeds;
00731 
00732   seeds.clear();
00733   //
00734   vector<EBDetId> usedXtals;
00735   usedXtals.clear();
00736   //
00737   EcalRecHitCollection::const_iterator itb;
00738   //
00739   static const int MAXCLUS = 2000;
00740   int nClus=0;
00741   vector<float> eClus;
00742   vector<float> etClus;
00743   vector<float> etaClus;
00744   vector<float> phiClus;
00745   vector<EBDetId> max_hit;
00746   vector< vector<EcalRecHit> > RecHitsCluster;
00747   vector<float> s4s9Clus;
00748   
00749   // find cluster seeds in EB 
00750   for(itb=rhEB->begin(); itb!=rhEB->end(); ++itb){
00751     EBDetId id(itb->id());
00752     double energy = itb->energy();
00753     if (energy > seleXtalMinEnergy_) {
00754       std::pair<DetId, EcalRecHit> map_entry(itb->id(), *itb);
00755       recHitsEB_map.insert(map_entry);
00756     }
00757     if (energy > clusSeedThr_) seeds.push_back(*itb);
00758   } // Eb rechits
00759   
00760   sort(seeds.begin(), seeds.end(), ecalRecHitLess());
00761   for (std::vector<EcalRecHit>::iterator itseed=seeds.begin(); itseed!=seeds.end(); itseed++) {
00762     EBDetId seed_id = itseed->id();
00763     std::vector<EBDetId>::const_iterator usedIds;
00764     
00765     bool seedAlreadyUsed=false;
00766     for(usedIds=usedXtals.begin(); usedIds!=usedXtals.end(); usedIds++){
00767       if(*usedIds==seed_id){
00768         seedAlreadyUsed=true;
00769         //cout<< " Seed with energy "<<itseed->energy()<<" was used !"<<endl;
00770         break; 
00771       }
00772     }
00773     if(seedAlreadyUsed)continue;
00774     topology_p = theCaloTopology->getSubdetectorTopology(DetId::Ecal,EcalBarrel);
00775     std::vector<DetId> clus_v = topology_p->getWindow(seed_id,clusEtaSize_,clusPhiSize_);       
00776     std::vector<DetId> clus_used;
00777 
00778     vector<EcalRecHit> RecHitsInWindow;
00779     
00780     double simple_energy = 0; 
00781     
00782     for (std::vector<DetId>::iterator det=clus_v.begin(); det!=clus_v.end(); det++) {
00783       EBDetId EBdet = *det;
00784       //      cout<<" det "<< EBdet<<" ieta "<<EBdet.ieta()<<" iphi "<<EBdet.iphi()<<endl;
00785       bool  HitAlreadyUsed=false;
00786       for(usedIds=usedXtals.begin(); usedIds!=usedXtals.end(); usedIds++){
00787         if(*usedIds==*det){
00788           HitAlreadyUsed=true;
00789           break;
00790         }
00791       }
00792       if(HitAlreadyUsed)continue;
00793       if (recHitsEB_map.find(*det) != recHitsEB_map.end()){
00794         //      cout<<" Used det "<< EBdet<<endl;
00795         std::map<DetId, EcalRecHit>::iterator aHit;
00796         aHit = recHitsEB_map.find(*det);
00797         usedXtals.push_back(*det);
00798         RecHitsInWindow.push_back(aHit->second);
00799         clus_used.push_back(*det);
00800         simple_energy = simple_energy + aHit->second.energy();
00801       }
00802     }
00803     
00804     math::XYZPoint clus_pos = posCalculator_.Calculate_Location(clus_used,hitCollection_p,geometry_p,geometryES_p);
00805     float theta_s = 2. * atan(exp(-clus_pos.eta()));
00806     float p0x_s = simple_energy * sin(theta_s) * cos(clus_pos.phi());
00807     float p0y_s = simple_energy * sin(theta_s) * sin(clus_pos.phi());
00808     //      float p0z_s = simple_energy * cos(theta_s);
00809     float et_s = sqrt( p0x_s*p0x_s + p0y_s*p0y_s);
00810     
00811     //cout << "       Simple Clustering: E,Et,px,py,pz: "<<simple_energy<<" "<<et_s<<" "<<p0x_s<<" "<<p0y_s<<" "<<endl;
00812 
00813     eClus.push_back(simple_energy);
00814     etClus.push_back(et_s);
00815     etaClus.push_back(clus_pos.eta());
00816     phiClus.push_back(clus_pos.phi());
00817     max_hit.push_back(seed_id);
00818     RecHitsCluster.push_back(RecHitsInWindow);
00819     //Compute S4/S9 variable
00820     //We are not sure to have 9 RecHits so need to check eta and phi:
00821     float s4s9_[4];
00822     for(int i=0;i<4;i++)s4s9_[i]= itseed->energy();
00823     for(unsigned int j=0; j<RecHitsInWindow.size();j++){
00824       //cout << " Simple cluster rh, ieta, iphi : "<<((EBDetId)RecHitsInWindow[j].id()).ieta()<<" "<<((EBDetId)RecHitsInWindow[j].id()).iphi()<<endl;
00825       if((((EBDetId)RecHitsInWindow[j].id()).ieta() == seed_id.ieta()-1 && seed_id.ieta()!=1 ) || ( seed_id.ieta()==1 && (((EBDetId)RecHitsInWindow[j].id()).ieta() == seed_id.ieta()-2))){
00826         if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()-1 ||((EBDetId)RecHitsInWindow[j].id()).iphi()-360 == seed_id.iphi()-1 ){
00827           s4s9_[0]+=RecHitsInWindow[j].energy();
00828         }else{
00829           if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()){
00830             s4s9_[0]+=RecHitsInWindow[j].energy();
00831             s4s9_[1]+=RecHitsInWindow[j].energy();
00832           }else{
00833             if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()+1 ||((EBDetId)RecHitsInWindow[j].id()).iphi()-360 == seed_id.iphi()+1 ){
00834               s4s9_[1]+=RecHitsInWindow[j].energy(); 
00835             }
00836           }
00837         }
00838       }else{
00839         if(((EBDetId)RecHitsInWindow[j].id()).ieta() == seed_id.ieta()){
00840           if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()-1 ||((EBDetId)RecHitsInWindow[j].id()).iphi()-360 == seed_id.iphi()-1 ){
00841             s4s9_[0]+=RecHitsInWindow[j].energy();
00842             s4s9_[3]+=RecHitsInWindow[j].energy();
00843           }else{
00844             if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()+1 ||((EBDetId)RecHitsInWindow[j].id()).iphi()-360 == seed_id.iphi()+1 ){
00845               s4s9_[1]+=RecHitsInWindow[j].energy(); 
00846               s4s9_[2]+=RecHitsInWindow[j].energy(); 
00847             }
00848           }
00849         }else{
00850           if((((EBDetId)RecHitsInWindow[j].id()).ieta() == seed_id.ieta()+1 && seed_id.ieta()!=-1 ) || ( seed_id.ieta()==-1 && (((EBDetId)RecHitsInWindow[j].id()).ieta() == seed_id.ieta()+2))){
00851             if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()-1 ||((EBDetId)RecHitsInWindow[j].id()).iphi()-360 == seed_id.iphi()-1 ){
00852               s4s9_[3]+=RecHitsInWindow[j].energy();
00853             }else{
00854               if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()){
00855                 s4s9_[2]+=RecHitsInWindow[j].energy();
00856                 s4s9_[3]+=RecHitsInWindow[j].energy();
00857               }else{
00858                 if(((EBDetId)RecHitsInWindow[j].id()).iphi() == seed_id.iphi()+1 ||((EBDetId)RecHitsInWindow[j].id()).iphi()-360 == seed_id.iphi()+1 ){
00859                   s4s9_[2]+=RecHitsInWindow[j].energy(); 
00860                 }
00861               }
00862             }
00863           }else{
00864             cout<<" (EBDetId)RecHitsInWindow[j].id()).ieta() "<<((EBDetId)RecHitsInWindow[j].id()).ieta()<<" seed_id.ieta() "<<seed_id.ieta()<<endl;
00865             cout<<" Problem with S4 calculation "<<endl;return;
00866           }
00867         }
00868       }
00869     }
00870     s4s9Clus.push_back(*max_element( s4s9_,s4s9_+4)/simple_energy);
00871     //    cout<<" s4s9Clus[0] "<<s4s9_[0]/simple_energy<<" s4s9Clus[1] "<<s4s9_[1]/simple_energy<<" s4s9Clus[2] "<<s4s9_[2]/simple_energy<<" s4s9Clus[3] "<<s4s9_[3]/simple_energy<<endl;
00872     //    cout<<" Max "<<*max_element( s4s9_,s4s9_+4)/simple_energy<<endl;
00873     nClus++;
00874     if (nClus == MAXCLUS) return;
00875   }  //  End loop over seed clusters
00876 
00877   // cout<< " Pi0 clusters: "<<nClus<<endl;
00878 
00879   // Selection, based on Simple clustering
00880   //pi0 candidates
00881   static const int MAXPI0S = 200;
00882   int npi0_s=0;
00883 
00884   vector<EBDetId> scXtals;
00885   scXtals.clear();
00886 
00887   if (nClus <= 1) return;
00888   for(Int_t i=0 ; i<nClus ; i++){
00889     for(Int_t j=i+1 ; j<nClus ; j++){
00890       //      cout<<" i "<<i<<"  etClus[i] "<<etClus[i]<<" j "<<j<<"  etClus[j] "<<etClus[j]<<endl;
00891       if( etClus[i]>selePtGammaOne_ && etClus[j]>selePtGammaTwo_ && s4s9Clus[i]>seleS4S9GammaOne_ && s4s9Clus[j]>seleS4S9GammaTwo_){
00892         float theta_0 = 2. * atan(exp(-etaClus[i]));
00893         float theta_1 = 2. * atan(exp(-etaClus[j]));
00894         
00895         float p0x = eClus[i] * sin(theta_0) * cos(phiClus[i]);
00896         float p1x = eClus[j] * sin(theta_1) * cos(phiClus[j]);
00897         float p0y = eClus[i] * sin(theta_0) * sin(phiClus[i]);
00898         float p1y = eClus[j] * sin(theta_1) * sin(phiClus[j]);
00899         float p0z = eClus[i] * cos(theta_0);
00900         float p1z = eClus[j] * cos(theta_1);
00901         
00902         float pt_pi0 = sqrt( (p0x+p1x)*(p0x+p1x) + (p0y+p1y)*(p0y+p1y));
00903         //      cout<<" pt_pi0 "<<pt_pi0<<endl;
00904         if (pt_pi0 < selePtPi0_)continue;
00905         float m_inv = sqrt ( (eClus[i] + eClus[j])*(eClus[i] + eClus[j]) - (p0x+p1x)*(p0x+p1x) - (p0y+p1y)*(p0y+p1y) - (p0z+p1z)*(p0z+p1z) );  
00906         if ( (m_inv<seleMinvMaxPi0_) && (m_inv>seleMinvMinPi0_) ){
00907 
00908           //New Loop on cluster to measure isolation:
00909           vector<int> IsoClus;
00910           IsoClus.clear();
00911           float Iso = 0;
00912           TVector3 pi0vect = TVector3((p0x+p1x), (p0y+p1y), (p0z+p1z));
00913           for(Int_t k=0 ; k<nClus ; k++){
00914             if(k==i || k==j)continue;
00915             TVector3 Clusvect = TVector3(eClus[k] * sin(2. * atan(exp(-etaClus[k]))) * cos(phiClus[k]), eClus[k] * sin(2. * atan(exp(-etaClus[k]))) * sin(phiClus[k]) , eClus[k] * cos(2. * atan(exp(-etaClus[k]))));
00916             float dretaclpi0 = fabs(etaClus[k] - pi0vect.Eta());
00917             float drclpi0 = Clusvect.DeltaR(pi0vect);
00918 
00919             if((drclpi0<selePi0BeltDR_) && (dretaclpi0<selePi0BeltDeta_) ){
00920 
00921               Iso = Iso + etClus[k];
00922               IsoClus.push_back(k);
00923             }
00924           }
00925 
00926         
00927           if(Iso/pt_pi0<selePi0Iso_){
00928                         
00929             hMinvPi0EB_->Fill(m_inv);
00930             hPt1Pi0EB_->Fill(etClus[i]);
00931             hPt2Pi0EB_->Fill(etClus[j]);
00932             hPtPi0EB_->Fill(pt_pi0);
00933             hIsoPi0EB_->Fill(Iso/pt_pi0);
00934             
00935                 
00936             npi0_s++;
00937           }
00938           
00939           if(npi0_s == MAXPI0S) return;
00940         }
00941       }
00942     } 
00943   } 
00944 
00945 
00946 
00947 
00948 } 

float PhotonAnalyzer::phiNormalization ( float &  a  )  [private]

Definition at line 1036 of file PhotonAnalyzer.cc.

References PI, and TWOPI.

Referenced by analyze().

01037 {
01038 //---Definitions
01039  const float PI    = 3.1415927;
01040  const float TWOPI = 2.0*PI;
01041 
01042 
01043  if(phi >  PI) {phi = phi - TWOPI;}
01044  if(phi < -PI) {phi = phi + TWOPI;}
01045 
01046  return phi;
01047 
01048 }


Member Data Documentation

edm::InputTag PhotonAnalyzer::barrelEcalHits_ [private]

Definition at line 83 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

int PhotonAnalyzer::clusEtaSize_ [private]

Definition at line 98 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

int PhotonAnalyzer::clusPhiSize_ [private]

Definition at line 99 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::clusSeedThr_ [private]

parameters needed for pizero finding

Definition at line 97 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

std::stringstream PhotonAnalyzer::currentFolder_ [private]

Definition at line 121 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

double PhotonAnalyzer::cutStep_ [private]

Definition at line 89 of file PhotonAnalyzer.h.

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

DQMStore* PhotonAnalyzer::dbe_ [private]

Definition at line 69 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

edm::InputTag PhotonAnalyzer::endcapEcalHits_ [private]

Definition at line 84 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

std::string PhotonAnalyzer::fName_ [private]

Definition at line 68 of file PhotonAnalyzer.h.

Referenced by PhotonAnalyzer().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_convVtxRvsZ_ [private]

Definition at line 209 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_convVtxRvsZ_isol_ [private]

Definition at line 208 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_dCotTracks_ [private]

Definition at line 183 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_dCotTracks_isol_ [private]

Definition at line 182 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_dCotTracks_part_ [private]

Definition at line 181 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_dEtaTracksAtEcal_ [private]

Definition at line 195 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_dEtaTracksAtEcal_isol_ [private]

Definition at line 194 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_dEtaTracksAtEcal_part_ [private]

Definition at line 193 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_dPhiTracksAtEcal_ [private]

Definition at line 191 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_dPhiTracksAtEcal_isol_ [private]

Definition at line 190 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_dPhiTracksAtEcal_part_ [private]

Definition at line 189 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_dPhiTracksAtVtx_ [private]

Definition at line 187 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_dPhiTracksAtVtx_isol_ [private]

Definition at line 186 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_dPhiTracksAtVtx_part_ [private]

Definition at line 185 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_ecalSum_ [private]

Definition at line 135 of file PhotonAnalyzer.h.

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

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_eOverPTracks_ [private]

Definition at line 179 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_eOverPTracks_isol_ [private]

Definition at line 178 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_eOverPTracks_part_ [private]

Definition at line 177 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_hcalSum_ [private]

Definition at line 136 of file PhotonAnalyzer.h.

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

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_hOverE_ [private]

Definition at line 162 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_hOverE_isol_ [private]

Definition at line 161 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_hOverE_part_ [private]

Definition at line 160 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_nConv_ [private]

Definition at line 175 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_nConv_isol_ [private]

Definition at line 174 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_nConv_part_ [private]

Definition at line 173 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_nHitsVsEta_ [private]

Definition at line 220 of file PhotonAnalyzer.h.

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

std::vector<MonitorElement*> PhotonAnalyzer::h_nHitsVsEta_isol_ [private]

Definition at line 219 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_nPho_ [private]

Definition at line 166 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_nPho_isol_ [private]

Definition at line 165 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_nPho_part_ [private]

Definition at line 164 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_nTrackIsolHollow_ [private]

Definition at line 133 of file PhotonAnalyzer.h.

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

std::vector<MonitorElement*> PhotonAnalyzer::h_nTrackIsolSolid_ [private]

Definition at line 131 of file PhotonAnalyzer.h.

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

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoConvEta_ [private]

Definition at line 204 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_phoConvEta_isol_ [private]

Definition at line 203 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoConvPhi_ [private]

Definition at line 206 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_phoConvPhi_isol_ [private]

Definition at line 205 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_phoDistribution_ [private]

Definition at line 170 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoDistribution_isol_ [private]

Definition at line 169 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_phoDistribution_part_ [private]

Definition at line 168 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_phoE_ [private]

Definition at line 150 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoE_isol_ [private]

Definition at line 149 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_phoE_part_ [private]

Definition at line 148 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_phoEt_ [private]

Definition at line 154 of file PhotonAnalyzer.h.

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

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoEt_isol_ [private]

Definition at line 153 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_phoEt_part_ [private]

Definition at line 152 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoEta_ [private]

Definition at line 199 of file PhotonAnalyzer.h.

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

std::vector<MonitorElement*> PhotonAnalyzer::h_phoEta_isol_ [private]

Definition at line 198 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_phoPhi_ [private]

Definition at line 201 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_phoPhi_isol_ [private]

Definition at line 200 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonAnalyzer::h_r9_ [private]

Definition at line 158 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_r9_isol_ [private]

Definition at line 157 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_r9_part_ [private]

Definition at line 156 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_r9VsEt_ [private]

Definition at line 212 of file PhotonAnalyzer.h.

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

std::vector<MonitorElement*> PhotonAnalyzer::h_r9VsEt_isol_ [private]

Definition at line 211 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::h_tkChi2_ [private]

Definition at line 217 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_tkChi2_isol_ [private]

Definition at line 216 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::h_trackPtSumHollow_ [private]

Definition at line 134 of file PhotonAnalyzer.h.

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

std::vector<MonitorElement*> PhotonAnalyzer::h_trackPtSumSolid_ [private]

Definition at line 132 of file PhotonAnalyzer.h.

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

MonitorElement* PhotonAnalyzer::hIsoPi0EB_ [private]

Definition at line 127 of file PhotonAnalyzer.h.

Referenced by beginJob(), and makePizero().

MonitorElement* PhotonAnalyzer::hMinvPi0EB_ [private]

Definition at line 124 of file PhotonAnalyzer.h.

Referenced by beginJob(), and makePizero().

MonitorElement* PhotonAnalyzer::hPt1Pi0EB_ [private]

Definition at line 125 of file PhotonAnalyzer.h.

Referenced by beginJob(), and makePizero().

MonitorElement* PhotonAnalyzer::hPt2Pi0EB_ [private]

Definition at line 126 of file PhotonAnalyzer.h.

Referenced by beginJob(), and makePizero().

MonitorElement* PhotonAnalyzer::hPtPi0EB_ [private]

Definition at line 128 of file PhotonAnalyzer.h.

Referenced by beginJob(), and makePizero().

int PhotonAnalyzer::isolationStrength_ [private]

Definition at line 94 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

double PhotonAnalyzer::minPhoEtCut_ [private]

Definition at line 87 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

int PhotonAnalyzer::nEntry_ [private]

Definition at line 73 of file PhotonAnalyzer.h.

Referenced by analyze(), and beginJob().

int PhotonAnalyzer::nEvt_ [private]

Definition at line 72 of file PhotonAnalyzer.h.

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

int PhotonAnalyzer::numberOfSteps_ [private]

Definition at line 90 of file PhotonAnalyzer.h.

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

std::vector<MonitorElement*> PhotonAnalyzer::p_ecalSum_ [private]

Definition at line 142 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_efficiencyVsEt_ [private]

Definition at line 146 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_efficiencyVsEta_ [private]

Definition at line 145 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_hcalSum_ [private]

Definition at line 143 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::p_nHitsVsEta_ [private]

Definition at line 222 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_nHitsVsEta_isol_ [private]

Definition at line 221 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_nTrackIsolHollow_ [private]

Definition at line 140 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_nTrackIsolSolid_ [private]

Definition at line 138 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<std::vector<MonitorElement*> > PhotonAnalyzer::p_r9VsEt_ [private]

Definition at line 214 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_r9VsEt_isol_ [private]

Definition at line 213 of file PhotonAnalyzer.h.

Referenced by beginJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_trackPtSumHollow_ [private]

Definition at line 141 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

std::vector<MonitorElement*> PhotonAnalyzer::p_trackPtSumSolid_ [private]

Definition at line 139 of file PhotonAnalyzer.h.

Referenced by beginJob(), and endJob().

bool PhotonAnalyzer::ParameterLogWeighted_ [private]

Definition at line 103 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

edm::ParameterSet PhotonAnalyzer::parameters_ [private]

Definition at line 78 of file PhotonAnalyzer.h.

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

double PhotonAnalyzer::ParameterT0_barl_ [private]

Definition at line 105 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::ParameterW0_ [private]

Definition at line 106 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::ParameterX0_ [private]

Definition at line 104 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

std::string PhotonAnalyzer::photonCollection_ [private]

Definition at line 81 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

std::string PhotonAnalyzer::photonProducer_ [private]

Definition at line 80 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

unsigned int PhotonAnalyzer::prescaleFactor_ [private]

Definition at line 75 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

double PhotonAnalyzer::seleMinvMaxPi0_ [private]

Definition at line 116 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::seleMinvMinPi0_ [private]

Definition at line 117 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::selePi0BeltDeta_ [private]

Definition at line 114 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::selePi0BeltDR_ [private]

Definition at line 113 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::selePi0Iso_ [private]

Definition at line 115 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::selePtGammaOne_ [private]

Definition at line 108 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::selePtGammaTwo_ [private]

Definition at line 109 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::selePtPi0_ [private]

Definition at line 110 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::seleS4S9GammaOne_ [private]

Definition at line 111 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::seleS4S9GammaTwo_ [private]

Definition at line 112 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

double PhotonAnalyzer::seleXtalMinEnergy_ [private]

Definition at line 101 of file PhotonAnalyzer.h.

Referenced by makePizero(), and PhotonAnalyzer().

bool PhotonAnalyzer::useBinning_ [private]

Definition at line 92 of file PhotonAnalyzer.h.

Referenced by analyze(), and PhotonAnalyzer().

int PhotonAnalyzer::verbosity_ [private]

Definition at line 70 of file PhotonAnalyzer.h.

Referenced by beginJob(), and PhotonAnalyzer().


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