Go to the documentation of this file.00001
00002 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00003 #include "FWCore/Framework/interface/Event.h"
00004 #include "FWCore/Framework/interface/MakerMacros.h"
00005 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
00006 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00007
00008 #include "FastSimulation/CaloRecHitsProducer/interface/CaloRecHitCopy.h"
00009
00010 #include <iostream>
00011
00012 CaloRecHitCopy::CaloRecHitCopy(edm::ParameterSet const & p)
00013
00014 {
00015
00016 theInputRecHitCollectionTypes = p.getParameter<std::vector<unsigned> >("InputRecHitCollectionTypes");
00017 theInputRecHitCollections = p.getParameter<std::vector<edm::InputTag> >("InputRecHitCollections");
00018 theOutputRecHitCollections = p.getParameter<std::vector<std::string> >("OutputRecHitCollections");
00019
00020 theOutputRecHitInstances.resize(theInputRecHitCollectionTypes.size());
00021
00022 for ( unsigned input=0; input<theInputRecHitCollectionTypes.size(); ++input ) {
00023
00024 theOutputRecHitInstances[input] =
00025 theOutputRecHitCollections[input] == "none" ?
00026 false : true;
00027
00028 switch ( theInputRecHitCollectionTypes[input] ) {
00029
00030 case 1:
00031 {
00032
00033 if ( !theOutputRecHitInstances[input] )
00034 produces<ESRecHitCollection>();
00035 else
00036 produces<ESRecHitCollection>(theOutputRecHitCollections[input]);
00037 }
00038 break;
00039
00040 case 2:
00041 {
00042
00043 if ( !theOutputRecHitInstances[input] )
00044 produces<EBRecHitCollection>();
00045 else
00046 produces<EBRecHitCollection>(theOutputRecHitCollections[input]);
00047 }
00048 break;
00049
00050 case 3:
00051 {
00052
00053 if ( !theOutputRecHitInstances[input] )
00054 produces<EERecHitCollection>();
00055 else
00056 produces<EERecHitCollection>(theOutputRecHitCollections[input]);
00057 }
00058 break;
00059
00060 case 4:
00061 {
00062
00063 if ( !theOutputRecHitInstances[input] )
00064 produces<HBHERecHitCollection>();
00065 else
00066 produces<HBHERecHitCollection>(theOutputRecHitCollections[input]);
00067 }
00068 break;
00069
00070 case 5:
00071 {
00072
00073 if ( !theOutputRecHitInstances[input] )
00074 produces<HORecHitCollection>();
00075 else
00076 produces<HORecHitCollection>(theOutputRecHitCollections[input]);
00077 }
00078 break;
00079
00080 case 6:
00081 {
00082
00083 if ( !theOutputRecHitInstances[input] )
00084 produces<HFRecHitCollection>();
00085 else
00086 produces<HFRecHitCollection>(theOutputRecHitCollections[input]);
00087 }
00088 break;
00089
00090 default:
00091
00092 break;
00093
00094 }
00095
00096 }
00097
00098
00099 }
00100
00101 CaloRecHitCopy::~CaloRecHitCopy() { }
00102
00103 void
00104 CaloRecHitCopy::produce(edm::Event & iEvent, const edm::EventSetup & es)
00105 {
00106
00107
00108 for ( unsigned input=0; input<theInputRecHitCollectionTypes.size(); ++input ) {
00109
00110 switch ( theInputRecHitCollectionTypes[input] ) {
00111
00112 case 1:
00113 {
00114
00115 std::auto_ptr< ESRecHitCollection > copiedESRecHitCollection( new ESRecHitCollection );
00116 edm::Handle<ESRecHitCollection> ESRecHits;
00117 iEvent.getByLabel(theInputRecHitCollections[input],ESRecHits);
00118 ESRecHitCollection::const_iterator itES = ESRecHits->begin();
00119 ESRecHitCollection::const_iterator lastES = ESRecHits->end();
00120
00121 copiedESRecHitCollection->reserve(ESRecHits->size());
00122 for ( ; itES!=lastES; ++itES++ ) {
00123 EcalRecHit aHit(*itES);
00124 copiedESRecHitCollection->push_back(aHit);
00125 }
00126 if ( !theOutputRecHitInstances[input] )
00127 iEvent.put(copiedESRecHitCollection);
00128 else
00129 iEvent.put(copiedESRecHitCollection,theOutputRecHitCollections[input]);
00130 }
00131 break;
00132
00133 case 2:
00134 {
00135
00136 std::auto_ptr< EBRecHitCollection > copiedEBRecHitCollection( new EBRecHitCollection );
00137 edm::Handle<EBRecHitCollection> EBRecHits;
00138 iEvent.getByLabel(theInputRecHitCollections[input],EBRecHits);
00139 EBRecHitCollection::const_iterator itEB = EBRecHits->begin();
00140 EBRecHitCollection::const_iterator lastEB = EBRecHits->end();
00141
00142 copiedEBRecHitCollection->reserve(EBRecHits->size());
00143
00144 for ( ; itEB!=lastEB; ++itEB++ ) {
00145 EcalRecHit aHit(*itEB);
00146 copiedEBRecHitCollection->push_back(aHit);
00147 }
00148 if ( !theOutputRecHitInstances[input] )
00149 iEvent.put(copiedEBRecHitCollection);
00150 else
00151 iEvent.put(copiedEBRecHitCollection,theOutputRecHitCollections[input]);
00152 }
00153 break;
00154
00155 case 3:
00156 {
00157
00158 std::auto_ptr< EERecHitCollection > copiedEERecHitCollection( new EERecHitCollection );
00159 edm::Handle<EERecHitCollection> EERecHits;
00160 iEvent.getByLabel(theInputRecHitCollections[input],EERecHits);
00161 EERecHitCollection::const_iterator itEE = EERecHits->begin();
00162 EERecHitCollection::const_iterator lastEE = EERecHits->end();
00163
00164 copiedEERecHitCollection->reserve(EERecHits->size());
00165
00166 for ( ; itEE!=lastEE; ++itEE++ ) {
00167 EcalRecHit aHit(*itEE);
00168 copiedEERecHitCollection->push_back(aHit);
00169 }
00170 if ( !theOutputRecHitInstances[input] )
00171 iEvent.put(copiedEERecHitCollection);
00172 else
00173 iEvent.put(copiedEERecHitCollection,theOutputRecHitCollections[input]);
00174 }
00175 break;
00176
00177 case 4:
00178 {
00179
00180 std::auto_ptr< HBHERecHitCollection > copiedHBHERecHitCollection( new HBHERecHitCollection );
00181 edm::Handle<HBHERecHitCollection> HBHERecHits;
00182 iEvent.getByLabel(theInputRecHitCollections[input],HBHERecHits);
00183 HBHERecHitCollection::const_iterator itHBHE = HBHERecHits->begin();
00184 HBHERecHitCollection::const_iterator lastHBHE = HBHERecHits->end();
00185
00186 copiedHBHERecHitCollection->reserve(HBHERecHits->size());
00187
00188 for ( ; itHBHE!=lastHBHE; ++itHBHE++ ) {
00189 HBHERecHit aHit(*itHBHE);
00190 copiedHBHERecHitCollection->push_back(aHit);
00191 }
00192 if ( !theOutputRecHitInstances[input] )
00193 iEvent.put(copiedHBHERecHitCollection);
00194 else
00195 iEvent.put(copiedHBHERecHitCollection,theOutputRecHitCollections[input]);
00196 }
00197 break;
00198
00199 case 5:
00200 {
00201
00202 std::auto_ptr< HORecHitCollection > copiedHORecHitCollection( new HORecHitCollection );
00203 edm::Handle<HORecHitCollection> HORecHits;
00204 iEvent.getByLabel(theInputRecHitCollections[input],HORecHits);
00205 HORecHitCollection::const_iterator itHO = HORecHits->begin();
00206 HORecHitCollection::const_iterator lastHO = HORecHits->end();
00207
00208 copiedHORecHitCollection->reserve(HORecHits->size());
00209
00210 for ( ; itHO!=lastHO; ++itHO++ ) {
00211 HORecHit aHit(*itHO);
00212 copiedHORecHitCollection->push_back(aHit);
00213 }
00214 if ( !theOutputRecHitInstances[input] )
00215 iEvent.put(copiedHORecHitCollection);
00216 else
00217 iEvent.put(copiedHORecHitCollection,theOutputRecHitCollections[input]);
00218 }
00219 break;
00220
00221 case 6:
00222 {
00223
00224 std::auto_ptr< HFRecHitCollection > copiedHFRecHitCollection( new HFRecHitCollection );
00225 edm::Handle<HFRecHitCollection> HFRecHits;
00226 iEvent.getByLabel(theInputRecHitCollections[input],HFRecHits);
00227 HFRecHitCollection::const_iterator itHF = HFRecHits->begin();
00228 HFRecHitCollection::const_iterator lastHF = HFRecHits->end();
00229
00230 copiedHFRecHitCollection->reserve(HFRecHits->size());
00231
00232 for ( ; itHF!=lastHF; ++itHF++ ) {
00233 HFRecHit aHit(*itHF);
00234 copiedHFRecHitCollection->push_back(aHit);
00235 }
00236 if ( !theOutputRecHitInstances[input] )
00237 iEvent.put(copiedHFRecHitCollection);
00238 else
00239 iEvent.put(copiedHFRecHitCollection,theOutputRecHitCollections[input]);
00240 }
00241 break;
00242
00243 default:
00244
00245 break;
00246
00247 }
00248
00249 }
00250
00251 }
00252
00253 DEFINE_FWK_MODULE(CaloRecHitCopy);