00001 #ifndef FP420ClusterMain_h 00002 #define FP420ClusterMain_h 00003 00004 #include <string> 00005 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00006 #include "FWCore/Framework/interface/ESHandle.h" 00007 #include "FWCore/Framework/interface/Frameworkfwd.h" 00008 #include "FWCore/Framework/interface/EDProducer.h" 00009 #include "FWCore/Framework/interface/EDAnalyzer.h" 00010 #include "FWCore/Framework/interface/Event.h" 00011 #include "FWCore/Framework/interface/EventSetup.h" 00012 #include "FWCore/Framework/interface/MakerMacros.h" 00013 00014 #include "SimG4CMS/FP420/interface/FP420NumberingScheme.h" 00015 #include "DataFormats/FP420Digi/interface/DigiCollectionFP420.h" 00016 #include "DataFormats/FP420Cluster/interface/ClusterCollectionFP420.h" 00017 #include "RecoRomanPot/RecoFP420/interface/ClusterNoiseFP420.h" 00018 #include "DataFormats/FP420Cluster/interface/ClusterFP420.h" 00019 #include <iostream> 00020 #include <vector> 00021 00022 00023 class ClusterNoiseFP420; 00024 class ClusterProducerFP420; 00025 00026 class FP420ClusterMain 00027 { 00028 public: 00029 00030 00031 FP420ClusterMain(const edm::ParameterSet& conf, int dn, int sn, int pn, int rn); 00032 // FP420ClusterMain(); 00033 00034 ~FP420ClusterMain(); 00035 00037 00038 // void run(const DigiCollectionFP420 &input, 00039 // ClusterCollectionFP420 &soutput, 00040 // const std::vector<ClusterNoiseFP420>& noise 00041 // ); 00042 void run(edm::Handle<DigiCollectionFP420> &input, 00043 std::auto_ptr<ClusterCollectionFP420> &soutput, 00044 std::vector<ClusterNoiseFP420>& noise 00045 ); 00046 00047 private: 00048 00049 00050 ClusterProducerFP420 *threeThreshold_; 00051 std::string clusterMode_; 00052 00053 //std::vector<HDigiFP420> collector; 00054 edm::ParameterSet conf_; 00055 00056 00057 bool validClusterizer_; 00058 double ElectronPerADC_; 00059 double ENC_; 00060 double BadElectrodeProbability_; 00061 bool UseNoiseBadElectrodeFlagFromDB_; 00062 00063 FP420NumberingScheme * theFP420NumberingScheme; 00064 00065 double ChannelThreshold; 00066 double SeedThreshold; 00067 double ClusterThreshold; 00068 int MaxVoidsInCluster; 00069 00070 double ldriftX; 00071 double ldriftY; 00072 double ldrift; 00073 double pitchX; // pitchX 00074 double pitchY; // pitchY 00075 double pitch; // pitch automatic 00076 float moduleThicknessX; // plate thicknessX 00077 float moduleThicknessY; // plate thicknessY 00078 float moduleThickness; // plate thickness 00079 int numStripsX, numStripsXW; // number of strips in the moduleX 00080 int numStripsY, numStripsYW; // number of strips in the moduleY 00081 int numStrips; // number of strips in the module 00082 00083 float Thick300; 00084 00085 // Number of Detectors: 00086 int dn0; 00087 // Number of Stations: 00088 int sn0; 00089 // Number of planes: 00090 int pn0; 00091 // Number of sensors: 00092 int rn0; 00093 // Type of planes: 00094 int xytype; 00095 00096 int verbosity; 00097 00098 //float sigma1_; 00099 //float sigma2_; 00100 00101 }; 00102 00103 #endif