Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial commit for new PF threshold DB object #22346

Merged
merged 1 commit into from Feb 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 6 additions & 0 deletions CondCore/EcalPlugins/src/plugin.cc
Expand Up @@ -156,6 +156,9 @@
#include "CondFormats/EcalObjects/interface/EcalPulseSymmCovariances.h"
#include "CondFormats/DataRecord/interface/EcalPulseSymmCovariancesRcd.h"

#include "CondFormats/EcalObjects/interface/EcalPFRecHitThresholds.h"
#include "CondFormats/DataRecord/interface/EcalPFRecHitThresholdsRcd.h"


REGISTER_PLUGIN(EcalPedestalsRcd,EcalCondObjectContainer<EcalPedestal>);
REGISTER_PLUGIN(EcalWeightXtalGroupsRcd,EcalCondObjectContainer<EcalXtalGroupId>);
Expand All @@ -173,13 +176,16 @@ REGISTER_PLUGIN(EcalLaserAlphasRcd,EcalCondObjectContainer<float>);
REGISTER_PLUGIN(EcalLaserAPDPNRatiosRcd,EcalLaserAPDPNRatios);
REGISTER_PLUGIN(EcalLaserAPDPNRatiosRefRcd,EcalCondObjectContainer<float>);
REGISTER_PLUGIN(EcalChannelStatusRcd,EcalCondObjectContainer<EcalChannelStatusCode>);
REGISTER_PLUGIN(EcalPFRecHitThresholdsRcd,EcalCondObjectContainer<float>);


REGISTER_PLUGIN(EcalClusterCrackCorrParametersRcd,EcalFunParams);
REGISTER_PLUGIN(EcalClusterLocalContCorrParametersRcd,EcalFunParams);
REGISTER_PLUGIN(EcalClusterEnergyUncertaintyParametersRcd,EcalFunParams);
REGISTER_PLUGIN(EcalClusterEnergyCorrectionParametersRcd,EcalFunParams);
REGISTER_PLUGIN(EcalClusterEnergyCorrectionObjectSpecificParametersRcd,EcalFunParams);


REGISTER_PLUGIN(EcalMappingElectronicsRcd,EcalCondObjectContainer<EcalMappingElement>);

REGISTER_PLUGIN(EcalTPGPedestalsRcd,EcalCondObjectContainer<EcalTPGPedestal> );
Expand Down
6 changes: 6 additions & 0 deletions CondFormats/DataRecord/interface/EcalPFRecHitThresholdsRcd.h
@@ -0,0 +1,6 @@
#ifndef CondFormats_DataRecord_EcalPFRecHitThresholdsRcd_h
#define CondFormats_DataRecord_EcalPFRecHitThresholdsRcd_h

#include "FWCore/Framework/interface/EventSetupRecordImplementation.h"
class EcalPFRecHitThresholdsRcd : public edm::eventsetup::EventSetupRecordImplementation<EcalPFRecHitThresholdsRcd> {};
#endif
4 changes: 4 additions & 0 deletions CondFormats/DataRecord/src/EcalPFRecHitThresholdsRcd.cc
@@ -0,0 +1,4 @@
#include "CondFormats/DataRecord/interface/EcalPFRecHitThresholdsRcd.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(EcalPFRecHitThresholdsRcd);
15 changes: 15 additions & 0 deletions CondFormats/EcalObjects/interface/EcalPFRecHitThresholds.h
@@ -0,0 +1,15 @@
#ifndef CondFormats_EcalObjects_EcalPFRecHitThresholds_H
#define CondFormats_EcalObjects_EcalPFRecHitThresholds_H
/**
* Author: Shahram Rahatlou, University of Rome & INFN
* Created: 22 Feb 2006
* $Id: EcalPFRecHitThresholds.h,v 1.3 2007/09/27 09:42:55 ferriff Exp $
**/
#include "CondFormats/EcalObjects/interface/EcalCondObjectContainer.h"

typedef float EcalPFRecHitThreshold;
typedef EcalFloatCondObjectContainer EcalPFRecHitThresholdsMap;
typedef EcalPFRecHitThresholdsMap EcalPFRecHitThresholds;


#endif
3 changes: 2 additions & 1 deletion CondFormats/EcalObjects/src/classes.h
Expand Up @@ -50,6 +50,7 @@
#include "CondFormats/EcalObjects/interface/EcalMappingElectronics.h"
#include "CondFormats/EcalObjects/interface/EcalFunctionParameters.h"
#include "CondFormats/EcalObjects/interface/EcalClusterLocalContCorrParameters.h"
#include "CondFormats/EcalObjects/interface/EcalPFRecHitThresholds.h"
#include "CondFormats/EcalObjects/interface/EcalClusterCrackCorrParameters.h"
#include "CondFormats/EcalObjects/interface/EcalClusterEnergyCorrectionParameters.h"
#include "CondFormats/EcalObjects/interface/EcalClusterEnergyUncertaintyParameters.h"
Expand Down Expand Up @@ -114,7 +115,7 @@ namespace CondFormats_EcalObjects {

EcalContainer<EEDetId,float> ec_eeDetId_float;
EcalContainer<EBDetId,float> ec_ebDetId_float;
EcalCondObjectContainer<float> floatCondObjectContainer; //typedefs: EcalFloatCondObjectContainer, EcalLinearCorrections, EcalIntercalibConstants, EcalIntercalibConstantsMC, EcalIntercalibErrors, EcalLaserAPDPNRatiosRef, EcalLaserAlphas, EcalTimeCalibConstants, EcalTimeCalibErrors
EcalCondObjectContainer<float> floatCondObjectContainer; //typedefs: EcalFloatCondObjectContainer, EcalLinearCorrections, EcalIntercalibConstants, EcalIntercalibConstantsMC, EcalIntercalibErrors, EcalLaserAPDPNRatiosRef, EcalLaserAlphas, EcalTimeCalibConstants, EcalTimeCalibErrors, EcalPFRecHitThresholds

EcalLaserAPDPNRatios laser_map;
std::vector<EcalLaserAPDPNRatios::EcalLaserAPDPNpair> laser_pair_map;
Expand Down
1 change: 1 addition & 0 deletions CondFormats/EcalObjects/src/headers.h
Expand Up @@ -4,6 +4,7 @@
#include "CondFormats/EcalObjects/interface/EcalPulseShapes.h"
#include "CondFormats/EcalObjects/interface/EcalPulseCovariances.h"
#include "CondFormats/EcalObjects/interface/EcalPulseSymmCovariances.h"
#include "CondFormats/EcalObjects/interface/EcalPFRecHitThresholds.h"

#include "CondFormats/External/interface/EcalDetID.h"
#include "CondFormats/External/interface/SMatrix.h"
Expand Down
3 changes: 3 additions & 0 deletions CondFormats/EcalObjects/test/testSerializationEcalObjects.cpp
Expand Up @@ -7,6 +7,7 @@ int main()
testSerialization<EcalADCToGeVConstant>();
testSerialization<EcalChannelStatus>();
testSerialization<EcalChannelStatusCode>();

testSerialization<EcalClusterCrackCorrParameters>();
testSerialization<EcalClusterEnergyCorrectionObjectSpecificParameters>();
testSerialization<EcalClusterEnergyCorrectionParameters>();
Expand All @@ -18,6 +19,7 @@ int main()
testSerialization<EcalCondObjectContainer<EcalMGPAGainRatio>>();
testSerialization<EcalCondObjectContainer<EcalMappingElement>>();
testSerialization<EcalCondObjectContainer<EcalPedestal>>();

testSerialization<EcalCondObjectContainer<EcalTPGCrystalStatusCode>>();
testSerialization<EcalCondObjectContainer<EcalTPGLinearizationConstant>>();
testSerialization<EcalCondObjectContainer<EcalTPGPedestal>>();
Expand Down Expand Up @@ -68,6 +70,7 @@ int main()
testSerialization<EcalFunParams>();
testSerialization<EcalGainRatios>();
testSerialization<EcalIntercalibConstants>();
testSerialization<EcalPFRecHitThresholds>();
testSerialization<EcalIntercalibConstantsMC>();
testSerialization<EcalIntercalibErrors>();
testSerialization<EcalLaserAPDPNRatios>();
Expand Down
1 change: 1 addition & 0 deletions CondTools/Ecal/BuildFile.xml
Expand Up @@ -16,6 +16,7 @@
<use name="OnlineDB/Oracle"/>
<use name="SimCalorimetry/EcalSelectiveReadoutProducers"/>
<use name="Geometry/EcalMapping"/>
<use name="CalibCalorimetry/EcalLaserCorrection"/>
<use name="root"/>
<use name="rootcore"/>
<use name="rootphysics"/>
Expand Down
32 changes: 32 additions & 0 deletions CondTools/Ecal/interface/EcalPFRecHitThresholdsMaker.h
@@ -0,0 +1,32 @@
#ifndef ECALPFRECHITTHRESHOLDSMAKER_H
#define ECALPFRECHITTHRESHOLDSMAKER_H

#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "CondCore/CondDB/interface/Exception.h"

#include "FWCore/Framework/interface/IOVSyncValue.h"

#include <string>
#include <map>

namespace edm {
class ParameterSet;
class Event;
class EventSetup;
}

class EcalPFRecHitThresholdsMaker : public edm::EDAnalyzer {
public:
explicit EcalPFRecHitThresholdsMaker(const edm::ParameterSet& iConfig );
~EcalPFRecHitThresholdsMaker() override;

void analyze( const edm::Event& evt, const edm::EventSetup& evtSetup) override;

private:

std::string m_timetype;
double m_nsigma;

};

#endif
17 changes: 17 additions & 0 deletions CondTools/Ecal/interface/EcalPFRecHitThresholdsXMLTranslator.h
@@ -0,0 +1,17 @@
/**
Translates a EcalPFRecHitThresholds record to XML
and vice versa

\author Stefano ARGIRO
\version $Id: EcalPFRecHitThresholdsXMLTranslator.h,v 1.2 2009/06/30 14:40:11 argiro Exp $
\date 20 Jun 2008
*/

#ifndef __EcalPFRecHitThresholdsXMLTranslator_h_
#define __EcalPFRecHitThresholdsXMLTranslator_h_

#include "CondTools/Ecal/interface/EcalFloatCondObjectContainerXMLTranslator.h"

typedef EcalFloatCondObjectContainerXMLTranslator EcalPFRecHitThresholdsXMLTranslator;

#endif // __EcalPFRecHitThresholdsXMLTranslator_h_
85 changes: 85 additions & 0 deletions CondTools/Ecal/plugins/StoreEcalCondition.cc
Expand Up @@ -101,6 +101,13 @@ void StoreEcalCondition::endJob() {
}else{
mydbservice->appendSinceTime<EcalIntercalibConstants>(mycali,newTime,"EcalIntercalibConstantsRcd");
}
} else if (objectName_[i] == "EcalPFRecHitThresholds") {
EcalPFRecHitThresholds* mycali=readEcalPFRecHitThresholdsFromFile(inpFileName_[i].c_str(),inpFileNameEE_[i].c_str());
if(!toAppend){
mydbservice->createNewIOV<EcalPFRecHitThresholds>(mycali,newTime,mydbservice->endOfTime(),"EcalPFRecHitThresholdsRcd");
}else{
mydbservice->appendSinceTime<EcalPFRecHitThresholds>(mycali,newTime,"EcalPFRecHitThresholdsRcd");
}
} else if (objectName_[i] == "EcalIntercalibConstantsMC") {
EcalIntercalibConstantsMC* mycali=readEcalIntercalibConstantsMCFromFile(inpFileName_[i].c_str(),inpFileNameEE_[i].c_str());
if(!toAppend){
Expand Down Expand Up @@ -508,6 +515,84 @@ StoreEcalCondition::readEcalADCToGeVConstantFromFile(const char* inputFile) {
}


//-------------------------------------------------------------
EcalPFRecHitThresholds*
StoreEcalCondition::readEcalPFRecHitThresholdsFromFile(const char* inputFile,const char* inputFileEE) {
//-------------------------------------------------------------

EcalPFRecHitThresholds* ical = new EcalPFRecHitThresholds();


FILE *inpFile; // input file
inpFile = fopen(inputFile,"r");
if(!inpFile) {
edm::LogError("StoreEcalCondition")<<"*** Can not open file: "<<inputFile;
return nullptr;
}

char line[256];


int ieta=0;
int iphi=0;
int ix=0;
int iy=0;
int iz=0;

float thresh=0;


int ii = 0;
while(fgets(line,255,inpFile)) {
sscanf(line, "%d %d %f ", &ieta, &iphi, &thresh);
if(ii==0) cout<<"crystal "<<ieta<<"/"<<iphi<<" Thresh= "<< thresh<<endl;

if (EBDetId::validDetId(ieta,iphi)) {
EBDetId ebid(ieta,iphi);
ical->setValue( ebid.rawId(), thresh );
ii++ ;
}
}


// inf.close(); // close inp. file
fclose(inpFile); // close inp. file

edm::LogInfo("StoreEcalCondition") << "Read PF RecHits for " << ii << " xtals " ;

cout << " I read the thresholds for "<< ii<< " crystals " << endl;



FILE *inpFileEE; // input file
inpFileEE = fopen(inputFileEE,"r");
if(!inpFileEE) {
edm::LogError("StoreEcalCondition")<<"*** Can not open file: "<<inputFileEE;
return nullptr;
}
ii=0;
while(fgets(line,255,inpFileEE)) {
sscanf(line, "%d %d %d %f ", &ix,&iy,&iz, &thresh);
if(ii==0) cout<<"crystal "<<ix<<"/"<<iy<<"/"<<iz<<" Thresh= "<< thresh<<endl;
if (EEDetId::validDetId(ix,iy,iz)) {
EEDetId eeid(ix,iy,iz);
ical->setValue( eeid.rawId(), thresh );
ii++ ;
}
}


// inf.close(); // close inp. file
fclose(inpFileEE); // close inp. file


cout<<"loop on EE channels done - number of crystals =" <<ii<< std::endl;



return ical;

}
//-------------------------------------------------------------
EcalIntercalibConstants*
StoreEcalCondition::readEcalIntercalibConstantsFromFile(const char* inputFile,const char* inputFileEE) {
Expand Down
2 changes: 2 additions & 0 deletions CondTools/Ecal/plugins/StoreEcalCondition.h
Expand Up @@ -17,6 +17,7 @@
#include "CondFormats/EcalObjects/interface/EcalTBWeights.h"
#include "CondFormats/EcalObjects/interface/EcalWeightSet.h"
#include "CondFormats/EcalObjects/interface/EcalWeight.h"
#include "CondFormats/EcalObjects/interface/EcalPFRecHitThresholds.h"
#include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"
#include "CondFormats/EcalObjects/interface/EcalIntercalibConstantsMC.h"
#include "CondFormats/EcalObjects/interface/EcalGainRatios.h"
Expand All @@ -42,6 +43,7 @@ class StoreEcalCondition : public edm::EDAnalyzer {
EcalTBWeights* readEcalTBWeightsFromFile(const char *);
EcalADCToGeVConstant* readEcalADCToGeVConstantFromFile(const char *);
EcalIntercalibConstants* readEcalIntercalibConstantsFromFile(const char *, const char *);
EcalPFRecHitThresholds* readEcalPFRecHitThresholdsFromFile(const char *, const char *);
EcalIntercalibConstantsMC* readEcalIntercalibConstantsMCFromFile(const char *, const char *);
EcalGainRatios* readEcalGainRatiosFromFile(const char *);
EcalChannelStatus* readEcalChannelStatusFromFile(const char *);
Expand Down
51 changes: 51 additions & 0 deletions CondTools/Ecal/python/copyEcalPFRecHitThresholdsFromFile_cfg.py
@@ -0,0 +1,51 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("TEST")
process.load("CalibCalorimetry.EcalTrivialCondModules.EcalTrivialCondRetriever_cfi")
process.EcalTrivialConditionRetriever.producedEcalPFRecHitThresholds = cms.untracked.bool(True)
process.EcalTrivialConditionRetriever.EcalPFRecHitThresholdsEB = cms.untracked.double( 0.0)
process.EcalTrivialConditionRetriever.EcalPFRecHitThresholdsEE = cms.untracked.double( 0.0)
process.EcalTrivialConditionRetriever.PFRecHitFile = cms.untracked.string("EB_thresholds_-1.txt")
process.EcalTrivialConditionRetriever.PFRecHitFileEE = cms.untracked.string("EE_thresholds_-1.txt")


process.load("CondCore.CondDB.CondDB_cfi")
#process.CondDBCommon.connect = 'oracle://cms_orcon_prod/CMS_COND_31X_ECAL'
#process.CondDBCommon.DBParameters.authenticationPath = '/nfshome0/popcondev/conddb'
process.CondDB.connect = 'sqlite_file:DB.db'

process.MessageLogger = cms.Service("MessageLogger",
debugModules = cms.untracked.vstring('*'),
destinations = cms.untracked.vstring('cout')
)

process.source = cms.Source("EmptyIOVSource",
firstValue = cms.uint64(1),
lastValue = cms.uint64(1),
timetype = cms.string('runnumber'),
interval = cms.uint64(1)
)

process.PoolDBOutputService = cms.Service("PoolDBOutputService",
process.CondDB,
toPut = cms.VPSet(
cms.PSet(
record = cms.string('EcalPFRecHitThresholdsRcd'),
tag = cms.string('EcalPFRecHitThresholds_2018_def_mc')
)
)
)

process.dbCopy = cms.EDAnalyzer("EcalDBCopy",
timetype = cms.string('runnumber'),
toCopy = cms.VPSet(
cms.PSet(
record = cms.string('EcalPFRecHitThresholdsRcd'),
container = cms.string('EcalPFRecHitThresholds')
)
)
)

process.prod = cms.EDAnalyzer("EcalTrivialObjectAnalyzer")

process.p = cms.Path(process.prod*process.dbCopy)
49 changes: 49 additions & 0 deletions CondTools/Ecal/python/copyEcalPFRecHitThresholds_cfg.py
@@ -0,0 +1,49 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("TEST")
process.load("CalibCalorimetry.EcalTrivialCondModules.EcalTrivialCondRetriever_cfi")
process.EcalTrivialConditionRetriever.producedEcalPFRecHitThresholds = cms.untracked.bool(True)
process.EcalTrivialConditionRetriever.EcalPFRecHitThresholdsEB = cms.untracked.double( 0.0)
process.EcalTrivialConditionRetriever.EcalPFRecHitThresholdsEE = cms.untracked.double( 0.0)


process.load("CondCore.CondDB.CondDB_cfi")
#process.CondDBCommon.connect = 'oracle://cms_orcon_prod/CMS_COND_31X_ECAL'
#process.CondDBCommon.DBParameters.authenticationPath = '/nfshome0/popcondev/conddb'
process.CondDB.connect = 'sqlite_file:DB.db'

process.MessageLogger = cms.Service("MessageLogger",
debugModules = cms.untracked.vstring('*'),
destinations = cms.untracked.vstring('cout')
)

process.source = cms.Source("EmptyIOVSource",
firstValue = cms.uint64(1),
lastValue = cms.uint64(1),
timetype = cms.string('runnumber'),
interval = cms.uint64(1)
)

process.PoolDBOutputService = cms.Service("PoolDBOutputService",
process.CondDB,
toPut = cms.VPSet(
cms.PSet(
record = cms.string('EcalPFRecHitThresholdsRcd'),
tag = cms.string('EcalPFRecHitThresholds_2018_mc')
)
)
)

process.dbCopy = cms.EDAnalyzer("EcalDBCopy",
timetype = cms.string('runnumber'),
toCopy = cms.VPSet(
cms.PSet(
record = cms.string('EcalPFRecHitThresholdsRcd'),
container = cms.string('EcalPFRecHitThresholds')
)
)
)

process.prod = cms.EDAnalyzer("EcalTrivialObjectAnalyzer")

process.p = cms.Path(process.prod*process.dbCopy)