#include <CalibTracker/SiStripESProducers/plugins/fake/SiStripQualityConfigurableFakeESSource.h>
Public Member Functions | |
std::auto_ptr< SiStripBadStrip > | produce (const SiStripBadModuleRcd &) |
SiStripQualityConfigurableFakeESSource (const edm::ParameterSet &) | |
~SiStripQualityConfigurableFakeESSource () | |
Private Types | |
typedef std::vector < edm::ParameterSet > | Parameters |
Private Member Functions | |
bool | isTECDetector (const uint32_t &therawid, uint32_t requested_side, uint32_t requested_wheel, uint32_t requested_petal_bkw_frw, uint32_t requested_petal, uint32_t requested_ring, uint32_t requested_ster, uint32_t requested_detid) const |
bool | isTIBDetector (const uint32_t &therawid, uint32_t requested_layer, uint32_t requested_bkw_frw, uint32_t requested_int_ext, uint32_t requested_string, uint32_t requested_ster, uint32_t requested_detid) const |
bool | isTIDDetector (const uint32_t &therawid, uint32_t requested_side, uint32_t requested_wheel, uint32_t requested_ring, uint32_t requested_ster, uint32_t requested_detid) const |
bool | isTOBDetector (const uint32_t &therawid, uint32_t requested_layer, uint32_t requested_bkw_frw, uint32_t requested_rod, uint32_t requested_ster, uint32_t requested_detid) const |
void | selectDetectors (const std::vector< uint32_t > &, std::vector< uint32_t > &) |
void | setIntervalFor (const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &iov, edm::ValidityInterval &iValidity) |
SiStripQualityConfigurableFakeESSource (const SiStripQualityConfigurableFakeESSource &) | |
Private Attributes | |
Parameters | BadComponentList_ |
edm::FileInPath | fp_ |
const edm::ParameterSet & | iConfig_ |
bool | printdebug_ |
Definition at line 35 of file SiStripQualityConfigurableFakeESSource.h.
typedef std::vector< edm::ParameterSet > SiStripQualityConfigurableFakeESSource::Parameters [private] |
Definition at line 84 of file SiStripQualityConfigurableFakeESSource.h.
SiStripQualityConfigurableFakeESSource::SiStripQualityConfigurableFakeESSource | ( | const edm::ParameterSet & | iConfig | ) |
Definition at line 23 of file SiStripQualityConfigurableFakeESSource.cc.
References BadComponentList_, fp_, edm::ParameterSet::getUntrackedParameter(), printdebug_, and edm::ESProducer::setWhatProduced().
00023 : 00024 iConfig_(iConfig){ 00025 setWhatProduced(this); 00026 findingRecord<SiStripBadModuleRcd>(); 00027 00028 edm::LogInfo("SiStripQualityConfigurableFakeESSource") << " ctor "; 00029 fp_ = iConfig.getUntrackedParameter<edm::FileInPath>("file",edm::FileInPath("CalibTracker/SiStripCommon/data/SiStripDetInfo.dat")); 00030 printdebug_ = iConfig.getUntrackedParameter<bool>("printDebug",false); 00031 BadComponentList_ = iConfig.getUntrackedParameter<Parameters>("BadComponentList"); 00032 00033 }
SiStripQualityConfigurableFakeESSource::~SiStripQualityConfigurableFakeESSource | ( | ) | [inline] |
SiStripQualityConfigurableFakeESSource::SiStripQualityConfigurableFakeESSource | ( | const SiStripQualityConfigurableFakeESSource & | ) | [private] |
bool SiStripQualityConfigurableFakeESSource::isTECDetector | ( | const uint32_t & | therawid, | |
uint32_t | requested_side, | |||
uint32_t | requested_wheel, | |||
uint32_t | requested_petal_bkw_frw, | |||
uint32_t | requested_petal, | |||
uint32_t | requested_ring, | |||
uint32_t | requested_ster, | |||
uint32_t | requested_detid | |||
) | const [private] |
Definition at line 249 of file SiStripQualityConfigurableFakeESSource.cc.
References TECDetId::isFrontPetal(), TECDetId::isStereo(), TECDetId::isZPlusSide(), TECDetId::petalNumber(), DetId::rawId(), TECDetId::ringNumber(), SiStripDetId::subDetector(), SiStripDetId::TEC, and TECDetId::wheelNumber().
Referenced by selectDetectors().
00256 { 00257 TECDetId potentialDet = TECDetId(therawid); // build TECDetId, at this point is just DetId, but do not want to cast twice 00258 if( potentialDet.subDetector() == SiStripDetId::TEC ){ // check if subdetector field is a TEC, both tested numbers are int 00259 if( // check if TEC is from the ones requested 00260 ( (potentialDet.wheelNumber()==requested_wheel) || requested_wheel==0 ) // take everything if default value is 0 00261 && 00262 ( (potentialDet.isZPlusSide() && requested_side==2) || (!potentialDet.isZPlusSide() && requested_side==1) || requested_side==0) 00263 && 00264 ( (potentialDet.isStereo() && requested_ster==1) || (!potentialDet.isStereo() && requested_ster==2) || requested_ster==0 ) 00265 && 00266 ( (potentialDet.isFrontPetal() && requested_petal_bkw_frw==2) || (!potentialDet.isFrontPetal() && requested_petal_bkw_frw==2) || requested_petal_bkw_frw==0 ) 00267 && 00268 ( (potentialDet.petalNumber()==requested_petal) || requested_petal==0 ) 00269 && 00270 ( (potentialDet.ringNumber()==requested_ring) || requested_ring==0 ) 00271 && 00272 ( (potentialDet.rawId()==requested_detid) || requested_detid==0 ) 00273 ) 00274 return 1; 00275 } 00276 return 0; 00277 }
bool SiStripQualityConfigurableFakeESSource::isTIBDetector | ( | const uint32_t & | therawid, | |
uint32_t | requested_layer, | |||
uint32_t | requested_bkw_frw, | |||
uint32_t | requested_int_ext, | |||
uint32_t | requested_string, | |||
uint32_t | requested_ster, | |||
uint32_t | requested_detid | |||
) | const [private] |
Definition at line 172 of file SiStripQualityConfigurableFakeESSource.cc.
References TIBDetId::isInternalString(), TIBDetId::isRPhi(), TIBDetId::isStereo(), TIBDetId::isZPlusSide(), TIBDetId::layerNumber(), DetId::rawId(), TIBDetId::stringNumber(), SiStripDetId::subDetector(), and SiStripDetId::TIB.
Referenced by selectDetectors().
00178 { 00179 TIBDetId potentialDet = TIBDetId(therawid); // build TIBDetId, at this point is just DetId, but do not want to cast twice 00180 if( potentialDet.subDetector() == SiStripDetId::TIB ){ // check if subdetector field is a TIB, both tested numbers are int 00181 if( // check if TIB is from the ones requested 00182 ( (potentialDet.layerNumber()==requested_layer) || requested_layer==0 ) // take everything if default value is 0 00183 && 00184 ( (potentialDet.isZPlusSide() && requested_bkw_frw==2) || (!potentialDet.isZPlusSide() && requested_bkw_frw==1) || requested_bkw_frw==0) 00185 && 00186 ( (potentialDet.isInternalString() && requested_int_ext==1) || (!potentialDet.isInternalString() && requested_int_ext==2) || requested_int_ext==0 ) 00187 && 00188 ( (potentialDet.isStereo() && requested_ster==1) || (potentialDet.isRPhi() && requested_ster==2) || requested_ster==0 ) 00189 && 00190 ( (potentialDet.stringNumber()==requested_string) || requested_string==0 ) 00191 && 00192 ( (potentialDet.rawId()==requested_detid) || requested_detid==0 ) 00193 ) 00194 return 1; 00195 } 00196 return 0; 00197 }
bool SiStripQualityConfigurableFakeESSource::isTIDDetector | ( | const uint32_t & | therawid, | |
uint32_t | requested_side, | |||
uint32_t | requested_wheel, | |||
uint32_t | requested_ring, | |||
uint32_t | requested_ster, | |||
uint32_t | requested_detid | |||
) | const [private] |
Definition at line 224 of file SiStripQualityConfigurableFakeESSource.cc.
References TIDDetId::diskNumber(), TIDDetId::isRPhi(), TIDDetId::isStereo(), TIDDetId::isZPlusSide(), DetId::rawId(), TIDDetId::ringNumber(), SiStripDetId::subDetector(), and SiStripDetId::TID.
Referenced by selectDetectors().
00229 { 00230 TIDDetId potentialDet = TIDDetId(therawid); // build TIDDetId, at this point is just DetId, but do not want to cast twice 00231 if( potentialDet.subDetector() == SiStripDetId::TID ){ // check if subdetector field is a TID, both tested numbers are int 00232 if( // check if TID is from the ones requested 00233 ( (potentialDet.diskNumber()==requested_wheel) || requested_wheel==0 ) // take everything if default value is 0 00234 && 00235 ( (potentialDet.isZPlusSide() && requested_side==2) || (!potentialDet.isZPlusSide() && requested_side==1) || requested_side==0) 00236 && 00237 ( (potentialDet.isStereo() && requested_ster==1) || (potentialDet.isRPhi() && requested_ster==2) || requested_ster==0 ) 00238 && 00239 ( (potentialDet.ringNumber()==requested_ring) || requested_ring==0 ) 00240 && 00241 ( (potentialDet.rawId()==requested_detid) || requested_detid==0 ) 00242 ) 00243 return 1; 00244 } 00245 return 0; 00246 }
bool SiStripQualityConfigurableFakeESSource::isTOBDetector | ( | const uint32_t & | therawid, | |
uint32_t | requested_layer, | |||
uint32_t | requested_bkw_frw, | |||
uint32_t | requested_rod, | |||
uint32_t | requested_ster, | |||
uint32_t | requested_detid | |||
) | const [private] |
Definition at line 199 of file SiStripQualityConfigurableFakeESSource.cc.
References TOBDetId::isRPhi(), TOBDetId::isStereo(), TOBDetId::isZPlusSide(), TOBDetId::layerNumber(), DetId::rawId(), TOBDetId::rodNumber(), SiStripDetId::subDetector(), and SiStripDetId::TOB.
Referenced by selectDetectors().
00204 { 00205 TOBDetId potentialDet = TOBDetId(therawid); // build TOBDetId, at this point is just DetId, but do not want to cast twice 00206 if( potentialDet.subDetector() == SiStripDetId::TOB ){ // check if subdetector field is a TOB, both tested numbers are int 00207 if( // check if TOB is from the ones requested 00208 ( (potentialDet.layerNumber()==requested_layer) || requested_layer==0 ) // take everything if default value is 0 00209 && 00210 ( (potentialDet.isZPlusSide() && requested_bkw_frw==2) || (!potentialDet.isZPlusSide() && requested_bkw_frw==1) || requested_bkw_frw==0) 00211 && 00212 ( (potentialDet.isStereo() && requested_ster==1) || (potentialDet.isRPhi() && requested_ster==2) || requested_ster==0 ) 00213 && 00214 ( (potentialDet.rodNumber()==requested_rod) || requested_rod==0 ) 00215 && 00216 ( (potentialDet.rawId()==requested_detid) || requested_detid==0 ) 00217 ) 00218 return 1; 00219 } 00220 return 0; 00221 }
std::auto_ptr< SiStripBadStrip > SiStripQualityConfigurableFakeESSource::produce | ( | const SiStripBadModuleRcd & | iRecord | ) |
Definition at line 36 of file SiStripQualityConfigurableFakeESSource.cc.
References SiStripQuality::cleanUp(), SiStripBadStrip::encode(), lat::endl(), fp_, edm::FileInPath::fullPath(), SiStripQuality::getBadComponentList(), iter, VarParsing::obj, printdebug_, ptr, SiStripBadStrip::put(), range, selectDetectors(), and ss.
00037 { 00038 00039 SiStripQuality* obj = new SiStripQuality(); 00040 00041 SiStripDetInfoFileReader reader(fp_.fullPath()); 00042 const std::vector<uint32_t>& DetIds= reader.getAllDetIds(); 00043 std::vector<uint32_t> selDetIds; 00044 selectDetectors(DetIds,selDetIds); 00045 00046 edm::LogInfo("SiStripQualityConfigurableFakeESSource")<<"[produce] number of selected dets to be removed " << selDetIds.size() <<std::endl; 00047 00048 std::stringstream ss; 00049 std::vector<uint32_t>::const_iterator iter=selDetIds.begin(); 00050 std::vector<uint32_t>::const_iterator iterEnd=selDetIds.end(); 00051 for(;iter!=iterEnd;++iter){ 00052 00053 SiStripQuality::InputVector theSiStripVector; 00054 00055 unsigned short firstBadStrip=0, NconsecutiveBadStrips=reader.getNumberOfApvsAndStripLength(*iter).first * 128; 00056 unsigned int theBadStripRange; 00057 00058 theBadStripRange = obj->encode(firstBadStrip,NconsecutiveBadStrips); 00059 00060 if (printdebug_) 00061 ss << "detid " << *iter << " \t" 00062 << " firstBadStrip " << firstBadStrip << "\t " 00063 << " NconsecutiveBadStrips " << NconsecutiveBadStrips << "\t " 00064 << " packed integer " << std::hex << theBadStripRange << std::dec 00065 << std::endl; 00066 00067 theSiStripVector.push_back(theBadStripRange); 00068 00069 SiStripBadStrip::Range range(theSiStripVector.begin(),theSiStripVector.end()); 00070 if ( ! obj->put(*iter,range) ) 00071 edm::LogError("SiStripQualityConfigurableFakeESSource")<<"[produce] detid already exists"<<std::endl; 00072 } 00073 if (printdebug_) 00074 edm::LogInfo("SiStripQualityConfigurableFakeESSource") << ss.str(); 00075 00076 obj->cleanUp(); 00077 //obj->fillBadComponents(); 00078 00079 std::stringstream ss1; 00080 if (printdebug_){ 00081 for (std::vector<SiStripQuality::BadComponent>::const_iterator iter=obj->getBadComponentList().begin();iter!=obj->getBadComponentList().end();++iter) 00082 ss1 << "bad module " << iter->detid << " " << iter->BadModule << "\n"; 00083 edm::LogInfo("SiStripQualityConfigurableFakeESSource") << ss1.str(); 00084 } 00085 std::auto_ptr<SiStripBadStrip> ptr( dynamic_cast<SiStripBadStrip*> (obj) ); 00086 return ptr; 00087 }
void SiStripQualityConfigurableFakeESSource::selectDetectors | ( | const std::vector< uint32_t > & | DetIds, | |
std::vector< uint32_t > & | list | |||
) | [private] |
Definition at line 97 of file SiStripQualityConfigurableFakeESSource.cc.
References BadComponentList_, isTECDetector(), isTIBDetector(), isTIDDetector(), isTOBDetector(), iter, printdebug_, ss, SiStripDetId::TEC, SiStripDetId::TIB, SiStripDetId::TID, SiStripDetId::TOB, DetId::Tracker, and SiStripDetId::UNKNOWN.
Referenced by produce().
00097 { 00098 00099 SiStripSubStructure siStripSubStructure; 00100 std::stringstream ss; 00101 00102 for(Parameters::iterator iBadComponent = BadComponentList_.begin(); iBadComponent != BadComponentList_.end(); ++iBadComponent ) { 00103 00104 if (printdebug_) 00105 ss << "Bad SubDet " << iBadComponent->getParameter<std::string>("SubDet") << " \t"; 00106 00107 SiStripDetId::SubDetector subDet=SiStripDetId::UNKNOWN; 00108 if (iBadComponent->getParameter<std::string>("SubDet")=="TIB") 00109 subDet=SiStripDetId::TIB; 00110 else if (iBadComponent->getParameter<std::string>("SubDet")=="TID") 00111 subDet=SiStripDetId::TID; 00112 else if (iBadComponent->getParameter<std::string>("SubDet")=="TOB") 00113 subDet=SiStripDetId::TOB; 00114 else if (iBadComponent->getParameter<std::string>("SubDet")=="TEC") 00115 subDet=SiStripDetId::TEC; 00116 00117 uint32_t startDet=DetId(DetId::Tracker,subDet).rawId(); 00118 uint32_t stopDet=DetId(DetId::Tracker,subDet+1).rawId(); 00119 00120 std::vector<uint32_t>::const_iterator iter=lower_bound(DetIds.begin(),DetIds.end(),startDet); 00121 std::vector<uint32_t>::const_iterator iterEnd=lower_bound(DetIds.begin(),DetIds.end(),stopDet); 00122 00123 bool resp; 00124 for ( ;iter!=iterEnd;++iter){ 00125 00126 resp=false; 00127 if (iBadComponent->getParameter<std::string>("SubDet")=="TIB") 00128 resp=isTIBDetector(*iter, 00129 iBadComponent->getParameter<uint32_t>("layer"), 00130 iBadComponent->getParameter<uint32_t>("bkw_frw"), 00131 iBadComponent->getParameter<uint32_t>("int_ext"), 00132 iBadComponent->getParameter<uint32_t>("ster"), 00133 iBadComponent->getParameter<uint32_t>("string_"), 00134 iBadComponent->getParameter<uint32_t>("detid") 00135 ); 00136 else if (iBadComponent->getParameter<std::string>("SubDet")=="TID") 00137 resp=isTIDDetector(*iter, 00138 iBadComponent->getParameter<uint32_t>("side"), 00139 iBadComponent->getParameter<uint32_t>("wheel"), 00140 iBadComponent->getParameter<uint32_t>("ring"), 00141 iBadComponent->getParameter<uint32_t>("ster"), 00142 iBadComponent->getParameter<uint32_t>("detid") 00143 ); 00144 else if (iBadComponent->getParameter<std::string>("SubDet")=="TOB") 00145 resp=isTOBDetector(*iter, 00146 iBadComponent->getParameter<uint32_t>("layer"), 00147 iBadComponent->getParameter<uint32_t>("bkw_frw"), 00148 iBadComponent->getParameter<uint32_t>("rod"), 00149 iBadComponent->getParameter<uint32_t>("ster"), 00150 iBadComponent->getParameter<uint32_t>("detid") 00151 ); 00152 else if (iBadComponent->getParameter<std::string>("SubDet")=="TEC") 00153 resp=isTECDetector(*iter, 00154 iBadComponent->getParameter<uint32_t>("side"), 00155 iBadComponent->getParameter<uint32_t>("wheel"), 00156 iBadComponent->getParameter<uint32_t>("petal_bkw_frw"), 00157 iBadComponent->getParameter<uint32_t>("petal"), 00158 iBadComponent->getParameter<uint32_t>("ring"), 00159 iBadComponent->getParameter<uint32_t>("ster"), 00160 iBadComponent->getParameter<uint32_t>("detid") 00161 ); 00162 00163 if(resp) 00164 list.push_back(*iter); 00165 } 00166 } 00167 if (printdebug_) 00168 edm::LogInfo("SiStripQualityConfigurableFakeESSource") << ss.str(); 00169 }
void SiStripQualityConfigurableFakeESSource::setIntervalFor | ( | const edm::eventsetup::EventSetupRecordKey & | , | |
const edm::IOVSyncValue & | iov, | |||
edm::ValidityInterval & | iValidity | |||
) | [private, virtual] |
Implements edm::EventSetupRecordIntervalFinder.
Definition at line 89 of file SiStripQualityConfigurableFakeESSource.cc.
References edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime(), and infinity.
00091 { 00092 edm::ValidityInterval infinity( iov.beginOfTime(), iov.endOfTime() ); 00093 iValidity = infinity; 00094 }
Definition at line 85 of file SiStripQualityConfigurableFakeESSource.h.
Referenced by selectDetectors(), and SiStripQualityConfigurableFakeESSource().
Definition at line 89 of file SiStripQualityConfigurableFakeESSource.h.
Referenced by produce(), and SiStripQualityConfigurableFakeESSource().
const edm::ParameterSet& SiStripQualityConfigurableFakeESSource::iConfig_ [private] |
Definition at line 88 of file SiStripQualityConfigurableFakeESSource.h.
Definition at line 90 of file SiStripQualityConfigurableFakeESSource.h.
Referenced by produce(), selectDetectors(), and SiStripQualityConfigurableFakeESSource().