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
00011 class ShallowClustersProducer : public edm::EDProducer {
00012
00013 public:
00014
00015 explicit ShallowClustersProducer(const edm::ParameterSet&);
00016
00017 private:
00018
00019 edm::InputTag theClustersLabel;
00020 std::string Prefix;
00021 void produce( edm::Event &, const edm::EventSetup & );
00022
00023 struct moduleVars {
00024 moduleVars(uint32_t);
00025 int subdetid, side, layerwheel, stringringrod, petal, stereo;
00026 uint32_t module;
00027 };
00028
00029 struct NearDigis {
00030 NearDigis(const SiStripClusterInfo&);
00031 NearDigis(const SiStripClusterInfo&, const edm::DetSetVector<SiStripProcessedRawDigi>&);
00032 float max, left, right, first, last, Lleft, Rright;
00033 float etaX() const {return (left+right)/max/2.;}
00034 float eta() const {return right>left ? max/(max+right) : left/(left+max);}
00035 float etaasymm() const {return right>left ? (right-max)/(right+max) : (max-left)/(max+left);}
00036 float outsideasymm() const {return (last-first)/(last+first);}
00037 };
00038
00039 };
00040
00041 #endif