![]() |
![]() |
#include <RecoRomanPot/RecoFP420/interface/ClusterizerFP420.h>
Public Member Functions | |
virtual void | beginJob () |
ClusterizerFP420 (const edm::ParameterSet &conf) | |
virtual void | produce (edm::Event &e, const edm::EventSetup &c) |
virtual | ~ClusterizerFP420 () |
Private Types | |
typedef std::vector< std::string > | vstring |
Private Attributes | |
edm::ParameterSet | conf_ |
int | dn0 |
std::vector< ClusterNoiseFP420 > | noise |
int | pn0 |
FP420ClusterMain * | sClusterizerFP420_ |
int | sn0 |
ClusterCollectionFP420 * | soutput |
vstring | trackerContainers |
bool | UseNoiseBadElectrodeFlagFromDB_ |
int | verbosity |
Definition at line 33 of file ClusterizerFP420.h.
typedef std::vector<std::string> cms::ClusterizerFP420::vstring [private] |
Definition at line 49 of file ClusterizerFP420.h.
cms::ClusterizerFP420::ClusterizerFP420 | ( | const edm::ParameterSet & | conf | ) | [explicit] |
Definition at line 44 of file ClusterizerFP420.cc.
References conf_, GenMuonPlsPt100GeV_cfg::cout, dn0, lat::endl(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), pn0, sClusterizerFP420_, sn0, trackerContainers, and verbosity.
00044 : 00045 conf_(conf) { 00046 00047 00048 std::string alias ( conf.getParameter<std::string>("@module_label") ); 00049 00050 produces<ClusterCollectionFP420>().setBranchAlias( alias ); 00051 00052 trackerContainers.clear(); 00053 trackerContainers = conf.getParameter<std::vector<std::string> >("ROUList"); 00054 00055 verbosity = conf_.getUntrackedParameter<int>("VerbosityLevel"); 00056 dn0 = conf_.getParameter<int>("NumberFP420Detectors"); 00057 sn0 = conf_.getParameter<int>("NumberFP420Stations"); 00058 pn0 = conf_.getParameter<int>("NumberFP420SPlanes"); 00059 00060 if (verbosity > 0) { 00061 std::cout << "Creating a ClusterizerFP420" << std::endl; 00062 std::cout << "ClusterizerFP420: sn0=" << sn0 << " pn0=" << pn0 << std::endl; 00063 } 00064 00065 sClusterizerFP420_ = new FP420ClusterMain(conf_,dn0,sn0,pn0); 00066 }
cms::ClusterizerFP420::~ClusterizerFP420 | ( | ) | [virtual] |
Definition at line 69 of file ClusterizerFP420.cc.
References sClusterizerFP420_.
00069 { 00070 delete sClusterizerFP420_; 00071 }
Definition at line 74 of file ClusterizerFP420.cc.
References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), and verbosity.
00074 { 00075 if (verbosity > 0) { 00076 std::cout << "BeginJob method " << std::endl; 00077 } 00078 //Getting Calibration data (Noises and BadElectrodes Flag) 00079 // bool UseNoiseBadElectrodeFlagFromDB_=conf_.getParameter<bool>("UseNoiseBadElectrodeFlagFromDB"); 00080 // if (UseNoiseBadElectrodeFlagFromDB_==true){ 00081 // iSetup.get<ClusterNoiseFP420Rcd>().get(noise);// AZ: do corrections for noise here 00082 //========================================================= 00083 // 00084 // Debug: show noise for DetIDs 00085 // ElectrodNoiseMapIterator mapit = noise->m_noises.begin(); 00086 // for (;mapit!=noise->m_noises.end();mapit++) 00087 // { 00088 // unsigned int detid = (*mapit).first; 00089 // std::cout << "detid " << detid << " # Electrode " << (*mapit).second.size()<<std::endl; 00090 // //ElectrodNoiseVector theElectrodVector = (*mapit).second; 00091 // const ElectrodNoiseVector theElectrodVector = noise->getElectrodNoiseVector(detid); 00092 00093 00094 // int electrode=0; 00095 // ElectrodNoiseVectorIterator iter=theElectrodVector.begin(); 00096 // //for(; iter!=theElectrodVector.end(); iter++) 00097 // { 00098 // std::cout << " electrode " << electrode++ << " =\t" 00099 // << iter->getNoise() << " \t" 00100 // << iter->getDisable() << " \t" 00101 // << std::endl; 00102 // } 00103 // } 00104 //=========================================================== 00105 // } 00106 }
void cms::ClusterizerFP420::produce | ( | edm::Event & | e, | |
const edm::EventSetup & | c | |||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 108 of file ClusterizerFP420.cc.
References GenMuonPlsPt100GeV_cfg::cout, dn0, lat::endl(), Exception, edm::Event::getByLabel(), iggi_31X_cfg::input, noise, pn0, edm::Event::put(), FP420ClusterMain::run(), sClusterizerFP420_, sn0, soutput, std, trackerContainers, and verbosity.
00109 { 00110 // beginJob; 00111 // be lazy and include the appropriate namespaces 00112 using namespace edm; 00113 using namespace std; 00114 if (verbosity > 0) { 00115 std::cout << "ClusterizerFP420: produce" << std::endl; 00116 } 00117 00118 // Get input 00119 //A 00120 // edm::Handle<DigiCollectionFP420> icf_simhit; 00121 /* 00122 Handle<DigiCollectionFP420> cf_simhit; 00123 std::vector<const DigiCollectionFP420 *> cf_simhitvec; 00124 for(uint32_t i = 0; i< trackerContainers.size();i++){ 00125 iEvent.getByLabel( trackerContainers[i], cf_simhit); 00126 cf_simhitvec.push_back(cf_simhit.product()); } 00127 std::auto_ptr<DigiCollectionFP420 > digis(new DigiCollectionFP420(cf_simhitvec)); 00128 00129 std::vector<HDigiFP420> input; 00130 DigiCollectionFP420::iterator isim; 00131 for (isim=digis->begin(); isim!= digis->end();isim++) { 00132 input.push_back(*isim); 00133 } 00134 */ 00135 //B 00136 00137 Handle<DigiCollectionFP420> input; 00138 try{ 00139 // iEvent.getByLabel( "FP420Digi" , digis); 00140 iEvent.getByLabel( trackerContainers[0] , input); 00141 } catch(const Exception&) 00142 { 00143 // in principal, should never happen, as it's taken care of by Framework 00144 throw cms::Exception("InvalidReference") 00145 << "Invalid reference to DigiCollectionFP420 \n"; 00146 } 00147 // } catch(...){;} 00148 00149 if (verbosity > 0) { 00150 std::cout << "ClusterizerFP420: OK1" << std::endl; 00151 } 00152 00153 // Step C: create empty output collection 00154 std::auto_ptr<ClusterCollectionFP420> soutput(new ClusterCollectionFP420); 00156 /* 00157 std::vector<SimVertex> input; 00158 Handle<DigiCollectionFP420> digis; 00159 iEvent.getByLabel("FP420Digi",digis); 00160 input.insert(input.end(),digis->begin(),digis->end()); 00161 00162 00163 00164 std::vector<HDigiFP420> input; 00165 for(vector<HDigiFP420>::const_iterator vsim=digis->begin(); 00166 vsim!=digis->end(); ++vsim){ 00167 input.push_back(*vsim); 00168 } 00169 theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end()); 00170 */ 00171 // std::vector<HDigiFP420> input; 00172 // DigiCollectionFP420 input; 00173 //input.push_back(digis); 00174 // input.insert(input.end(), digis->begin(), digis->end()); 00175 00176 /* 00177 std::vector<HDigiFP420> input; 00178 input.clear(); 00179 DigiCollectionFP420::ContainerIterator sort_begin = digis->begin(); 00180 DigiCollectionFP420::ContainerIterator sort_end = digis->end(); 00181 for ( ;sort_begin != sort_end; ++sort_begin ) { 00182 input.push_back(*sort_begin); 00183 } // for 00184 */ 00185 00186 00187 // put zero to container info from the beginning (important! because not any detID is updated with coming of new event !!!!!! 00188 // clean info of container from previous event 00189 for (int det=1; det<dn0; det++) { 00190 for (int sector=1; sector<sn0; sector++) { 00191 for (int zmodule=1; zmodule<pn0; zmodule++) { 00192 for (int zside=1; zside<3; zside++) { 00193 // zside here defines just Left or Right planes, not their type !!! 00194 // int sScale = 20; 00195 int sScale = 2*(pn0-1), dScale = 2*(pn0-1)*(sn0-1); 00196 // int index = FP420NumberingScheme::packFP420Index(det, zside, sector, zmodule); 00197 // intindex is a continues numbering of FP420 00198 int zScale=2; unsigned int detID = dScale*(det - 1)+sScale*(sector - 1)+zScale*(zmodule - 1)+zside; 00199 std::vector<ClusterFP420> collector; 00200 collector.clear(); 00201 ClusterCollectionFP420::Range inputRange; 00202 inputRange.first = collector.begin(); 00203 inputRange.second = collector.end(); 00204 00205 soutput->putclear(inputRange,detID); 00206 00207 }//for 00208 }//for 00209 }//for 00210 }//for 00211 00212 00213 // !!!!!! 00214 // if we want to keep Cluster container/Collection for one event ---> uncomment the line below and vice versa 00215 soutput->clear(); //container_.clear() --> start from the beginning of the container 00216 00217 // RUN now: !!!!!! 00218 // sClusterizerFP420_.run(input, soutput, noise); 00219 if (verbosity > 0) { 00220 std::cout << "ClusterizerFP420: OK2" << std::endl; 00221 } 00222 sClusterizerFP420_->run(input, soutput, noise); 00223 00224 if (verbosity > 0) { 00225 std::cout << "ClusterizerFP420: OK3" << std::endl; 00226 } 00227 00228 // if(collectorZS.data.size()>0){ 00229 00230 // std::cout <<"======= ClusterizerFP420: end of produce " << std::endl; 00231 00232 // Step D: write output to file 00233 iEvent.put(soutput); 00234 if (verbosity > 0) { 00235 std::cout << "ClusterizerFP420: OK4" << std::endl; 00236 } 00237 }//produce
int cms::ClusterizerFP420::dn0 [private] |
std::vector<ClusterNoiseFP420> cms::ClusterizerFP420::noise [private] |
int cms::ClusterizerFP420::pn0 [private] |
Definition at line 57 of file ClusterizerFP420.h.
Referenced by ClusterizerFP420(), produce(), and ~ClusterizerFP420().
int cms::ClusterizerFP420::sn0 [private] |
Definition at line 63 of file ClusterizerFP420.h.
int cms::ClusterizerFP420::verbosity [private] |
Definition at line 65 of file ClusterizerFP420.h.
Referenced by beginJob(), ClusterizerFP420(), and produce().