CMS 3D CMS Logo

cms::ClusterizerFP420 Class Reference

#include <RecoRomanPot/RecoFP420/interface/ClusterizerFP420.h>

Inheritance diagram for cms::ClusterizerFP420:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

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< ClusterNoiseFP420noise
int pn0
FP420ClusterMainsClusterizerFP420_
int sn0
ClusterCollectionFP420soutput
vstring trackerContainers
bool UseNoiseBadElectrodeFlagFromDB_
int verbosity


Detailed Description

Definition at line 33 of file ClusterizerFP420.h.


Member Typedef Documentation

typedef std::vector<std::string> cms::ClusterizerFP420::vstring [private]

Definition at line 49 of file ClusterizerFP420.h.


Constructor & Destructor Documentation

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   }  


Member Function Documentation

void cms::ClusterizerFP420::beginJob ( void   )  [virtual]

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


Member Data Documentation

edm::ParameterSet cms::ClusterizerFP420::conf_ [private]

Definition at line 54 of file ClusterizerFP420.h.

Referenced by ClusterizerFP420().

int cms::ClusterizerFP420::dn0 [private]

Definition at line 64 of file ClusterizerFP420.h.

Referenced by ClusterizerFP420(), and produce().

std::vector<ClusterNoiseFP420> cms::ClusterizerFP420::noise [private]

Definition at line 62 of file ClusterizerFP420.h.

Referenced by produce().

int cms::ClusterizerFP420::pn0 [private]

Definition at line 64 of file ClusterizerFP420.h.

Referenced by ClusterizerFP420(), and produce().

FP420ClusterMain* cms::ClusterizerFP420::sClusterizerFP420_ [private]

Definition at line 57 of file ClusterizerFP420.h.

Referenced by ClusterizerFP420(), produce(), and ~ClusterizerFP420().

int cms::ClusterizerFP420::sn0 [private]

Definition at line 64 of file ClusterizerFP420.h.

Referenced by ClusterizerFP420(), and produce().

ClusterCollectionFP420* cms::ClusterizerFP420::soutput [private]

Definition at line 59 of file ClusterizerFP420.h.

Referenced by produce().

vstring cms::ClusterizerFP420::trackerContainers [private]

Definition at line 55 of file ClusterizerFP420.h.

Referenced by ClusterizerFP420(), and produce().

bool cms::ClusterizerFP420::UseNoiseBadElectrodeFlagFromDB_ [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().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:36:28 2009 for CMSSW by  doxygen 1.5.4