Skip to content

Commit

Permalink
Merged CMSSW_7_5_X from repository cms-sw
Browse files Browse the repository at this point in the history
  • Loading branch information
jshlee committed Apr 10, 2015
2 parents aabe5eb + 8f511c4 commit bd62b88
Show file tree
Hide file tree
Showing 15 changed files with 830 additions and 46 deletions.
6 changes: 6 additions & 0 deletions CalibTracker/SiStripQuality/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## Code description
There are three algorithms available in this package which are used to find Bad APVs and strips for the SiStrip Tracker.
* `SiStripBadAPVAlgorithmFromClusterOccupancy` : as the name suggests it looks for the Bad APVs in individual layers/discs of the tracker. It first finds the mean and RMS of all the APV medians in a given layer/disc using a few iterations excluding 3 sigma outliers. Then these APV medians are individually required to be within N(configurable) times the calculated RMS. Otherwise the APV is marked bad.
* `SiStripHotStripAlgorithmFromClusterOccupancy` : it identifies bad strips using Poisson probability using a few iterations till no new bad strips are detected. At the starting point of each iteration average entries per strip is calculated excluding bad strips and then Poissonian is estimated using this average. If the estimated Poissonian is greater than the predefined (configurable) probablity the strip is marked hot.
* `SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy` : it's a combination of above two algorithms to identify Bad APVs and Hot Strips in one go. This is used in the official Prompt Calibration Loop.

## Useful Tools
### Configurations
The following configuration files are examples of how to use the EDAnalyzer `SiStripQualityStastistics`. They can be used as they are, profiting of the fact that parameters can be passed in the command line, or edited for more complicated cases.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ void SiStripHotStripAlgorithmFromClusterOccupancy::extractBadStrips(SiStripQuali

phisto._th1f->SetEntries(NumberEntriesPerAPV);
phisto._NEntries=(int)phisto._th1f->GetEntries();
phisto._NEmptyBins=0;

LogTrace("SiStripHotStrip") << "Number of clusters in APV " << apv << ": " << NumberEntriesPerAPV << std::endl;

Expand Down
8 changes: 4 additions & 4 deletions DataFormats/PatCandidates/interface/Photon.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,16 @@ namespace pat {
float patParticleIso() const { return userIsolation(pat::PfAllParticleIso); }
/// Returns the isolation calculated with only the charged hadron
/// PFCandidates
float patChargedHadronIso() const { return userIsolation(pat::PfChargedHadronIso); }
float chargedHadronIso() const { return reco::Photon::chargedHadronIso(); }
/// Returns the isolation calculated with only the neutral hadron
/// PFCandidates
float patNeutralHadronIso() const { return userIsolation(pat::PfNeutralHadronIso); }
float neutralHadronIso() const { return reco::Photon::neutralHadronIso(); }
/// Returns the isolation calculated with only the gamma
/// PFCandidates
float patPhotonIso() const { return userIsolation(pat::PfGammaIso); }
float photonIso() const { return reco::Photon::photonIso(); }
/// Returns the isolation calculated with only the pile-up charged hadron
/// PFCandidates
float patPuChargedHadronIso() const { return userIsolation(pat::PfPUChargedHadronIso); }
float puChargedHadronIso() const { return userIsolation(pat::PfPUChargedHadronIso); }

/// Returns a user defined isolation value
float userIso(uint8_t index=0) const { return userIsolation(IsolationKeys(UserBaseIso + index)); }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,14 @@ class SiTrackerGSMatchedRecHit2D : public GSSiTrackerRecHit2DLocalPos{
ClusterRef const& cluster() const { return cluster_;}
void setClusterRef(const ClusterRef &ref) { cluster_ = ref; }

void setEeId(uint32_t eeId){eeId_ = eeId;}

virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const;

private:
int const simhitId_;
int const simtrackId_;
uint32_t const eeId_;
uint32_t eeId_;
ClusterRef cluster_;
int const pixelMultiplicityAlpha_;
int const pixelMultiplicityBeta_;
Expand Down
2 changes: 2 additions & 0 deletions DataFormats/TrackerRecHit2D/interface/SiTrackerGSRecHit2D.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ class SiTrackerGSRecHit2D : public GSSiTrackerRecHit2DLocalPos{
ClusterRef const& cluster() const { return cluster_;}
void setClusterRef(const ClusterRef &ref) { cluster_ = ref; }

void setEeId(uint32_t eeId){eeId_ = eeId;}

virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const {return false;}

private:
Expand Down
3 changes: 2 additions & 1 deletion DataFormats/TrackerRecHit2D/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
<version ClassVersion="11" checksum="1613493049"/>
<version ClassVersion="10" checksum="877294307"/>
</class>
<class name="SiTrackerGSMatchedRecHit2D" ClassVersion="12">
<class name="SiTrackerGSMatchedRecHit2D" ClassVersion="13">
<version ClassVersion="13" checksum="1553184391"/>
<version ClassVersion="12" checksum="2874379530"/>
<version ClassVersion="11" checksum="1553184391"/>
<version ClassVersion="10" checksum="3741285161"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include "TMVA/Factory.h"
#include "TMVA/Tools.h"
#include "TMVA/Reader.h"
#include "TMVA/MethodBase.h"

class EGammaMvaEleEstimator{
public:
Expand Down Expand Up @@ -86,6 +87,7 @@ class EGammaMvaEleEstimator{
Double_t mvaValue(const pat::Electron& ele,
const reco::Vertex& vertex,
double rho,
bool useFull5x5 = kFALSE,
bool printDebug = kFALSE);

Double_t isoMvaValue(const reco::GsfElectron& ele,
Expand Down Expand Up @@ -245,6 +247,7 @@ class EGammaMvaEleEstimator{
private:

std::vector<TMVA::Reader*> fTMVAReader;
std::vector<TMVA::MethodBase*> fTMVAMethod;
std::string fMethodname;
Bool_t fisInitialized;
MVAType fMVAType;
Expand Down
150 changes: 150 additions & 0 deletions EgammaAnalysis/ElectronTools/interface/EGammaMvaEleEstimatorCSA14.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
//--------------------------------------------------------------------------------------------------
// $Id $
//
// EGammaMvaEleEstimatorCSA14
//
// Helper Class for applying MVA electron ID selection
//
// Authors: D.Benedetti, E.DiMaro, S.Xie
//--------------------------------------------------------------------------------------------------




#ifndef EGammaMvaEleEstimatorCSA14_H
#define EGammaMvaEleEstimatorCSA14_H

#include <vector>
#include <TROOT.h>
#include "TMVA/Factory.h"
#include "TMVA/Tools.h"
#include "TMVA/Reader.h"

using namespace std;

#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
#include "DataFormats/EgammaReco/interface/SuperCluster.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
#include "DataFormats/Common/interface/RefToPtr.h"
#include "DataFormats/VertexReco/interface/Vertex.h"
#include "RecoEcal/EgammaCoreTools/interface/EcalClusterLazyTools.h"
#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
#include "TrackingTools/IPTools/interface/IPTools.h"
#include "EgammaAnalysis/ElectronTools/interface/ElectronEffectiveArea.h"
#include "DataFormats/Common/interface/RefToPtr.h"

#include "DataFormats/PatCandidates/interface/Electron.h"

using namespace reco;

class EGammaMvaEleEstimatorCSA14{
public:
EGammaMvaEleEstimatorCSA14();
~EGammaMvaEleEstimatorCSA14();

enum MVAType {
kTrig = 0, // MVA for triggering electrons
kNonTrig = 1, // MVA for non-triggering electrons
kNonTrigPhys14 = 2, // MVA for non-triggering electrons in Phys14
};

void initialize( std::string methodName,
std::string weightsfile,
EGammaMvaEleEstimatorCSA14::MVAType type);
void initialize( std::string methodName,
EGammaMvaEleEstimatorCSA14::MVAType type,
Bool_t useBinnedVersion,
std::vector<std::string> weightsfiles );

Bool_t isInitialized() const { return fisInitialized; }
UInt_t GetMVABin(double eta,double pt ) const;

void bindVariables();

// for kTrig and kNonTrig algorithm
Double_t mvaValue(const reco::GsfElectron& ele,
const reco::Vertex& vertex,
const TransientTrackBuilder& transientTrackBuilder,
noZS::EcalClusterLazyTools myEcalCluster,
bool printDebug = kFALSE);


Double_t mvaValue(const pat::Electron& ele,
bool printDebug);







private:

std::vector<TMVA::Reader*> fTMVAReader;
std::vector<TMVA::MethodBase*> fTMVAMethod;
std::string fMethodname;
Bool_t fisInitialized;
MVAType fMVAType;
Bool_t fUseBinnedVersion;
UInt_t fNMVABins;

Float_t fMVAVar_fbrem;
Float_t fMVAVar_kfchi2;
Float_t fMVAVar_kfhits; //number of layers
Float_t fMVAVar_kfhitsall; //number of hits
Float_t fMVAVar_gsfchi2;

Float_t fMVAVar_deta;
Float_t fMVAVar_dphi;
Float_t fMVAVar_detacalo;

Float_t fMVAVar_see;
Float_t fMVAVar_spp;
Float_t fMVAVar_etawidth;
Float_t fMVAVar_phiwidth;
Float_t fMVAVar_OneMinusE1x5E5x5;
Float_t fMVAVar_R9;

Float_t fMVAVar_HoE;
Float_t fMVAVar_EoP;
Float_t fMVAVar_IoEmIoP;
Float_t fMVAVar_eleEoPout;
Float_t fMVAVar_EoPout;
Float_t fMVAVar_PreShowerOverRaw;

Float_t fMVAVar_d0;
Float_t fMVAVar_ip3d;
Float_t fMVAVar_ip3dSig;

Float_t fMVAVar_eta;
Float_t fMVAVar_abseta;
Float_t fMVAVar_pt;
Float_t fMVAVar_rho;
Float_t fMVAVar_isBarrel;
Float_t fMVAVar_isEndcap;
Float_t fMVAVar_SCeta;

Float_t fMVAVar_ChargedIso_DR0p0To0p1;
Float_t fMVAVar_ChargedIso_DR0p1To0p2;
Float_t fMVAVar_ChargedIso_DR0p2To0p3;
Float_t fMVAVar_ChargedIso_DR0p3To0p4;
Float_t fMVAVar_ChargedIso_DR0p4To0p5;
Float_t fMVAVar_GammaIso_DR0p0To0p1;
Float_t fMVAVar_GammaIso_DR0p1To0p2;
Float_t fMVAVar_GammaIso_DR0p2To0p3;
Float_t fMVAVar_GammaIso_DR0p3To0p4;
Float_t fMVAVar_GammaIso_DR0p4To0p5;
Float_t fMVAVar_NeutralHadronIso_DR0p0To0p1;
Float_t fMVAVar_NeutralHadronIso_DR0p1To0p2;
Float_t fMVAVar_NeutralHadronIso_DR0p2To0p3;
Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4;
Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5;

};

#endif
Loading

0 comments on commit bd62b88

Please sign in to comment.