Go to the documentation of this file.00001 #ifndef SHALLOW_CLUSTERS_PRODUCER
00002 #define SHALLOW_CLUSTERS_PRODUCER
00003
00004 #include "FWCore/Framework/interface/EDProducer.h"
00005 #include "FWCore/Framework/interface/Frameworkfwd.h"
00006 #include "FWCore/Utilities/interface/InputTag.h"
00007 #include "DataFormats/Common/interface/DetSetVector.h"
00008 class SiStripClusterInfo;
00009 class SiStripProcessedRawDigi;
00010 class TrackerTopology;
00011
00012 class ShallowClustersProducer : public edm::EDProducer {
00013
00014 public:
00015
00016 explicit ShallowClustersProducer(const edm::ParameterSet&);
00017
00018 private:
00019
00020 edm::InputTag theClustersLabel;
00021 std::string Prefix;
00022 void produce( edm::Event &, const edm::EventSetup & );
00023
00024 struct moduleVars {
00025 moduleVars(uint32_t, const TrackerTopology*);
00026 int subdetid, side, layerwheel, stringringrod, petal, stereo;
00027 uint32_t module;
00028 };
00029
00030 struct NearDigis {
00031 NearDigis(const SiStripClusterInfo&);
00032 NearDigis(const SiStripClusterInfo&, const edm::DetSetVector<SiStripProcessedRawDigi>&);
00033 float max, left, right, first, last, Lleft, Rright;
00034 float etaX() const {return (left+right)/max/2.;}
00035 float eta() const {return right>left ? max/(max+right) : left/(left+max);}
00036 float etaasymm() const {return right>left ? (right-max)/(right+max) : (max-left)/(max+left);}
00037 float outsideasymm() const {return (last-first)/(last+first);}
00038 };
00039
00040 };
00041
00042 #endif