Skip to content

Commit

Permalink
Initial commit for new PF threshold DB object
Browse files Browse the repository at this point in the history
  • Loading branch information
argiro committed Feb 26, 2018
1 parent e44cdb4 commit 76d8a57
Show file tree
Hide file tree
Showing 21 changed files with 547 additions and 65 deletions.
6 changes: 6 additions & 0 deletions CondCore/EcalPlugins/src/plugin.cc
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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)
Loading

0 comments on commit 76d8a57

Please sign in to comment.