Skip to content

Commit

Permalink
Merge pull request #6703 from depasse/EcalSamplesCorrelation
Browse files Browse the repository at this point in the history
Ecal samples correlation
  • Loading branch information
cmsbuild committed Dec 9, 2014
2 parents f606a9d + e65ad17 commit bf2021c
Show file tree
Hide file tree
Showing 19 changed files with 360 additions and 9 deletions.
Expand Up @@ -103,6 +103,9 @@
#include "CondFormats/EcalObjects/interface/EcalTimeBiasCorrections.h"
#include "CondFormats/DataRecord/interface/EcalTimeBiasCorrectionsRcd.h"

#include "CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h"
#include "CondFormats/DataRecord/interface/EcalSamplesCorrelationRcd.h"

#include "SimG4CMS/Calo/interface/EnergyResolutionVsLumi.h"
#include "SimG4CMS/Calo/interface/EvolutionECAL.h"

Expand Down Expand Up @@ -175,6 +178,8 @@ class EcalTrivialConditionRetriever : public edm::ESProducer,

virtual std::auto_ptr<EcalTimeBiasCorrections> produceEcalTimeBiasCorrections( const EcalTimeBiasCorrectionsRcd& );

virtual std::auto_ptr<EcalSamplesCorrelation> produceEcalSamplesCorrelation( const EcalSamplesCorrelationRcd& );

protected:
//overriding from ContextRecordIntervalFinder
virtual void setIntervalFor( const edm::eventsetup::EventSetupRecordKey&,
Expand Down Expand Up @@ -294,6 +299,14 @@ class EcalTrivialConditionRetriever : public edm::ESProducer,
std::vector<double> EEtimeCorrAmplitudeBins_;
std::vector<double> EEtimeCorrShiftBins_;

std::vector<double> EBG12samplesCorrelation_;
std::vector<double> EBG6samplesCorrelation_;
std::vector<double> EBG1samplesCorrelation_;
std::vector<double> EEG12samplesCorrelation_;
std::vector<double> EEG6samplesCorrelation_;
std::vector<double> EEG1samplesCorrelation_;
std::string SamplesCorrelationFile_;

int nTDCbins_;

bool getWeightsFromFile_;
Expand Down Expand Up @@ -331,6 +344,8 @@ class EcalTrivialConditionRetriever : public edm::ESProducer,
bool getLaserAlphaFromFile_;
bool producedEcalSampleMask_;
bool producedEcalTimeBiasCorrections_;
bool producedEcalSamplesCorrelation_;
bool getSamplesCorrelationFromFile_;

int verbose_; // verbosity

Expand Down
Expand Up @@ -225,6 +225,7 @@
sampleMaskEE = cms.untracked.uint32(1023),

producedEcalTimeBiasCorrections = cms.untracked.bool(True),

# trivial
# EBtimeCorrAmplitudeBins = cms.untracked.vdouble(0),
# EBtimeCorrShiftBins = cms.untracked.vdouble(0),
Expand Down Expand Up @@ -252,5 +253,19 @@
-0.896, -0.896, -0.896, -0.896, -0.563, -0.392, -0.287, -0.203, -0.135, -0.100, -0.068, -0.050, -0.060, -0.052, -0.055,
-0.050, -0.052, -0.056, -0.055, -0.056, -0.048, -0.037, -0.038, -0.037, -0.025, -0.026, -0.024, -0.013, -0.003, 0.005,
0.020, 0.026, 0.008, 0.007, -0.006, 0.024, 0.045, 0.062, 0.085, 0.088 , 0.111 , 0.139, 0.156, 0.176, 0.210,
0.242, 0.267, 0.301, 0.318, 0.278, 0.287, 0.218, 0.305, 0.245, 0.184, -0.159, -0.095, 0.037)
0.242, 0.267, 0.301, 0.318, 0.278, 0.287, 0.218, 0.305, 0.245, 0.184, -0.159, -0.095, 0.037),

producedEcalSamplesCorrelation = cms.untracked.bool(True),
EBG12samplesCorrelation = cms.untracked.vdouble(
1.00000, 0.71073, 0.55721, 0.46089, 0.40449, 0.35931, 0.33924, 0.32439, 0.31581, 0.30481),
EBG6samplesCorrelation = cms.untracked.vdouble(
1.00000, 0.70946, 0.58021, 0.49846, 0.45006, 0.41366, 0.39699, 0.38478, 0.37847, 0.37055),
EBG1samplesCorrelation = cms.untracked.vdouble(
1.00000, 0.73354, 0.64442, 0.58851, 0.55425, 0.53082, 0.51916, 0.51097, 0.50732, 0.50409),
EEG12samplesCorrelation = cms.untracked.vdouble(
1.00000, 0.71373, 0.44825, 0.30152, 0.21609, 0.14786, 0.11772, 0.10165, 0.09465, 0.08098),
EEG6samplesCorrelation = cms.untracked.vdouble(
1.00000, 0.71217, 0.47464, 0.34056, 0.26282, 0.20287, 0.17734, 0.16256, 0.15618, 0.14443),
EEG1samplesCorrelation = cms.untracked.vdouble(
1.00000, 0.72698, 0.62048, 0.55691, 0.51848, 0.49147, 0.47813, 0.47007, 0.46621, 0.46265)
)
Expand Up @@ -105,6 +105,13 @@ EcalTrivialConditionRetriever::EcalTrivialConditionRetriever( const edm::Paramet
EEtimeCorrAmplitudeBins_ = ps.getUntrackedParameter< std::vector<double> >("EEtimeCorrAmplitudeBins", std::vector<double>() );
EEtimeCorrShiftBins_ = ps.getUntrackedParameter< std::vector<double> >("EEtimeCorrShiftBins", std::vector<double>() );

EBG12samplesCorrelation_ = ps.getUntrackedParameter< std::vector<double> >("EBG12samplesCorrelation", std::vector<double>() );
EBG6samplesCorrelation_ = ps.getUntrackedParameter< std::vector<double> >("EBG6samplesCorrelation", std::vector<double>() );
EBG1samplesCorrelation_ = ps.getUntrackedParameter< std::vector<double> >("EBG1samplesCorrelation", std::vector<double>() );
EEG12samplesCorrelation_ = ps.getUntrackedParameter< std::vector<double> >("EEG12samplesCorrelation", std::vector<double>() );
EEG6samplesCorrelation_ = ps.getUntrackedParameter< std::vector<double> >("EEG6samplesCorrelation", std::vector<double>() );
EEG1samplesCorrelation_ = ps.getUntrackedParameter< std::vector<double> >("EEG1samplesCorrelation", std::vector<double>() );

nTDCbins_ = 1;

weightsForAsynchronousRunning_ = ps.getUntrackedParameter<bool>("weightsForTB",false);
Expand Down Expand Up @@ -431,6 +438,15 @@ EcalTrivialConditionRetriever::EcalTrivialConditionRetriever( const edm::Paramet
setWhatProduced(this, &EcalTrivialConditionRetriever::produceEcalTimeBiasCorrections );
findingRecord<EcalTimeBiasCorrectionsRcd>();
}
producedEcalSamplesCorrelation_ = ps.getUntrackedParameter<bool>("producedEcalSamplesCorrelation", false);
if (producedEcalSamplesCorrelation_) {
setWhatProduced(this, &EcalTrivialConditionRetriever::produceEcalSamplesCorrelation );
findingRecord<EcalSamplesCorrelationRcd>();
getSamplesCorrelationFromFile_ = ps.getUntrackedParameter<bool>("getSamplesCorrelationFromFile",false);
if(getSamplesCorrelationFromFile_) {
SamplesCorrelationFile_ = ps.getUntrackedParameter<std::string>("SamplesCorrelationFile","EcalSamplesCorrelation.txt");
}
}
}

EcalTrivialConditionRetriever::~EcalTrivialConditionRetriever()
Expand Down Expand Up @@ -3153,3 +3169,51 @@ EcalTrivialConditionRetriever::produceEcalTimeBiasCorrections( const EcalTimeBia
back_inserter(ipar->EETimeCorrShiftBins));
return ipar;
}

std::auto_ptr<EcalSamplesCorrelation>
EcalTrivialConditionRetriever::produceEcalSamplesCorrelation( const EcalSamplesCorrelationRcd &) {
if(getSamplesCorrelationFromFile_) {
std::ifstream f;
f.open(edm::FileInPath(SamplesCorrelationFile_).fullPath().c_str());
float ww;
for(int j = 0; j < 10; ++j) {
f >> ww;
EBG12samplesCorrelation_.push_back(ww);
}
for(int j = 0; j < 10; ++j) {
f >> ww;
EBG6samplesCorrelation_.push_back(ww);
}
for(int j = 0; j < 10; ++j) {
f >> ww;
EBG1samplesCorrelation_.push_back(ww);
}
for(int j = 0; j < 10; ++j) {
f >> ww;
EEG12samplesCorrelation_.push_back(ww);
}
for(int j = 0; j < 10; ++j) {
f >> ww;
EEG6samplesCorrelation_.push_back(ww);
}
for(int j = 0; j < 10; ++j) {
f >> ww;
EEG1samplesCorrelation_.push_back(ww);
}
f.close();
}
std::auto_ptr<EcalSamplesCorrelation> ipar = std::auto_ptr<EcalSamplesCorrelation>( new EcalSamplesCorrelation() );
copy(EBG12samplesCorrelation_.begin(), EBG12samplesCorrelation_.end(),
back_inserter(ipar->EBG12SamplesCorrelation));
copy(EBG6samplesCorrelation_.begin(), EBG6samplesCorrelation_.end(),
back_inserter(ipar->EBG6SamplesCorrelation));
copy(EBG1samplesCorrelation_.begin(), EBG1samplesCorrelation_.end(),
back_inserter(ipar->EBG1SamplesCorrelation));
copy(EEG12samplesCorrelation_.begin(), EEG12samplesCorrelation_.end(),
back_inserter(ipar->EEG12SamplesCorrelation));
copy(EEG6samplesCorrelation_.begin(), EEG6samplesCorrelation_.end(),
back_inserter(ipar->EEG6SamplesCorrelation));
copy(EEG1samplesCorrelation_.begin(), EEG1samplesCorrelation_.end(),
back_inserter(ipar->EEG1SamplesCorrelation));
return ipar;
}
4 changes: 4 additions & 0 deletions CondCore/EcalPlugins/src/plugin.cc
Expand Up @@ -145,6 +145,8 @@
#include "CondFormats/EcalObjects/interface/EcalTimeBiasCorrections.h"
#include "CondFormats/DataRecord/interface/EcalTimeBiasCorrectionsRcd.h"

#include "CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h"
#include "CondFormats/DataRecord/interface/EcalSamplesCorrelationRcd.h"

REGISTER_PLUGIN(EcalPedestalsRcd,EcalPedestals);
REGISTER_PLUGIN(EcalWeightXtalGroupsRcd,EcalWeightXtalGroups);
Expand Down Expand Up @@ -198,3 +200,5 @@ REGISTER_PLUGIN(EcalSRSettingsRcd, EcalSRSettings);
REGISTER_PLUGIN(EcalSampleMaskRcd, EcalSampleMask);

REGISTER_PLUGIN(EcalTimeBiasCorrectionsRcd, EcalTimeBiasCorrections);

REGISTER_PLUGIN(EcalSamplesCorrelationRcd, EcalSamplesCorrelation);
17 changes: 17 additions & 0 deletions CondFormats/DataRecord/interface/EcalSamplesCorrelationRcd.h
@@ -0,0 +1,17 @@
#ifndef CondFormats_EcalObjects_EcalSamplesCorrelationRcd_HH
#define CondFormats_EcalObjects_EcalSamplesCorrelationRcd_HH

// -*- C++ -*-
//
// Author: Jean Fay
// Created: Monday, 24th Nov 2014
//

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

class EcalSamplesCorrelationRcd
: public edm::eventsetup::EventSetupRecordImplementation<
EcalSamplesCorrelationRcd> {
};

#endif
9 changes: 9 additions & 0 deletions CondFormats/DataRecord/src/EcalSamplesCorrelationRcd.cc
@@ -0,0 +1,9 @@
// -*- C++ -*-

// Author: Jean Fay
// Created: Monday, 24 Nov 2014

#include "CondFormats/DataRecord/interface/EcalSamplesCorrelationRcd.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(EcalSamplesCorrelationRcd);
35 changes: 35 additions & 0 deletions CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h
@@ -0,0 +1,35 @@
#ifndef CondFormats_EcalObjects_EcalSamplesCorrelation_HH
#define CondFormats_EcalObjects_EcalSamplesCorrelation_HH

// -*- C++ -*-
//
// Author: Jean Fay
// Created: Monday 24 Nov 2014
//

#include "CondFormats/Serialization/interface/Serializable.h"

#include "DataFormats/Math/interface/Matrix.h"
#include <iostream>
#include <vector>

class EcalSamplesCorrelation {
public:
EcalSamplesCorrelation();
EcalSamplesCorrelation(const EcalSamplesCorrelation& aset);
~EcalSamplesCorrelation();

std::vector<double> EBG12SamplesCorrelation;
std::vector<double> EBG6SamplesCorrelation;
std::vector<double> EBG1SamplesCorrelation;

std::vector<double> EEG12SamplesCorrelation;
std::vector<double> EEG6SamplesCorrelation;
std::vector<double> EEG1SamplesCorrelation;

void print(std::ostream& o) const;

COND_SERIALIZABLE;
};

#endif
40 changes: 40 additions & 0 deletions CondFormats/EcalObjects/src/EcalSamplesCorrelation.cc
@@ -0,0 +1,40 @@
#include "CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h"

EcalSamplesCorrelation::EcalSamplesCorrelation() {}
EcalSamplesCorrelation::~EcalSamplesCorrelation() {}

EcalSamplesCorrelation::EcalSamplesCorrelation(
const EcalSamplesCorrelation& aset) {}

template <typename T>
static inline void print_vector(std::ostream& o, const std::vector<T>& vect) {
o << "[";
for (std::vector<double>::const_iterator i = vect.begin(); i != vect.end();
++i) {

std::cout << *i << ", ";
}
o << "]";
}

void EcalSamplesCorrelation::print(std::ostream& o) const {
o << "EB Gain 12 correlation:";
print_vector<double>(o, this->EBG12SamplesCorrelation);
o << std::endl;
o << "EB Gain 6 correlation:";
print_vector<double>(o, this->EBG6SamplesCorrelation);
o << std::endl;
o << "EB Gain 1 correlation:";
print_vector<double>(o, this->EBG1SamplesCorrelation);
o << std::endl;

o << "EE Gain 12 correlation:";
print_vector<double>(o, this->EEG12SamplesCorrelation);
o << std::endl;
o << "EE Gain 6 correlation:";
print_vector<double>(o, this->EEG6SamplesCorrelation);
o << std::endl;
o << "EE Gain 1 correlation:";
print_vector<double>(o, this->EEG1SamplesCorrelation);
o << std::endl;
}
@@ -0,0 +1,4 @@
#include "CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h"
#include "FWCore/Utilities/interface/typelookup.h"

TYPELOOKUP_DATA_REG(EcalSamplesCorrelation);
5 changes: 4 additions & 1 deletion CondFormats/EcalObjects/src/classes.h
Expand Up @@ -15,6 +15,7 @@
#include "CondFormats/EcalObjects/interface/EcalIntercalibConstantsMC.h"
#include "CondFormats/EcalObjects/interface/EcalIntercalibErrors.h"
#include "CondFormats/EcalObjects/interface/EcalTimeBiasCorrections.h"
#include "CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h"
#include "CondFormats/EcalObjects/interface/EcalTimeCalibConstants.h"
#include "CondFormats/EcalObjects/interface/EcalTimeCalibErrors.h"
#include "CondFormats/EcalObjects/interface/EcalTimeOffsetConstant.h"
Expand Down Expand Up @@ -198,6 +199,8 @@ namespace CondFormats_EcalObjects {
// std::vector<float> ecalSRSettings_dccNormalizedWeights_1;
// float ecalSRSettings_dccNormalizedWeights_elt_2;

EcalTimeBiasCorrections timeBiasCorrections;
EcalTimeBiasCorrections timeBiasCorrections;

EcalSamplesCorrelation samplesCorrelation;
};
}
3 changes: 2 additions & 1 deletion CondFormats/EcalObjects/src/classes_def.xml
Expand Up @@ -284,7 +284,8 @@
<field name="substitutionSrfs_" mapping="blob" />
</class>


<class name="EcalTimeBiasCorrections" />

<class name="EcalSamplesCorrelation" />

</lcgdict>
2 changes: 2 additions & 0 deletions CondFormats/EcalObjects/src/headers.h
@@ -1,4 +1,6 @@
#include "CondFormats/EcalObjects/src/classes.h"
#include "CondFormats/EcalObjects/interface/EcalTimeBiasCorrections.h"
#include "CondFormats/EcalObjects/interface/EcalSamplesCorrelation.h"

#include "CondFormats/External/interface/EcalDetID.h"
#include "CondFormats/External/interface/SMatrix.h"
Expand Down
2 changes: 2 additions & 0 deletions CondFormats/EcalObjects/test/testSerializationEcalObjects.cpp
Expand Up @@ -121,6 +121,8 @@ int main()
testSerialization<EcalWeightSet>();
testSerialization<EcalWeightXtalGroups>();
testSerialization<EcalXtalGroupId>();
testSerialization<EcalTimeBiasCorrections>();
testSerialization<EcalSamplesCorrelation>();
testSerialization<std::map<std::pair<EcalXtalGroupId, EcalTBWeights::EcalTDCId>, EcalWeightSet>>();
testSerialization<std::map<uint32_t, EcalTPGFineGrainConstEB>>();
testSerialization<std::map<uint32_t, EcalTPGFineGrainStripEE::Item>>();
Expand Down
6 changes: 6 additions & 0 deletions CondTools/Ecal/python/EcalSamplesCorrelation.txt
@@ -0,0 +1,6 @@
1. 0.75 0.64 0.58 0.51 0.45 0.43 0.42 0.41 0.40
1. 0.75 0.62 0.58 0.51 0.45 0.43 0.42 0.41 0.40
1. 0.75 0.60 0.58 0.51 0.45 0.43 0.42 0.41 0.40
1. 0.71 0.44 0.33 0.22 0.15 0.12 0.10 0.09 0.08
1. 0.71 0.42 0.33 0.22 0.15 0.12 0.10 0.09 0.08
1. 0.71 0.40 0.33 0.22 0.15 0.12 0.10 0.09 0.08
13 changes: 13 additions & 0 deletions CondTools/Ecal/python/EcalSamplesCorrelation_cfi.py
@@ -0,0 +1,13 @@
import FWCore.ParameterSet.Config as cms

EcalTrivialConditionRetriever = cms.ESSource("EcalTrivialConditionRetriever",
producedEcalClusterLocalContCorrParameters = cms.untracked.bool(True),
producedEcalClusterCrackCorrParameters = cms.untracked.bool(True),
producedEcalClusterEnergyUncertaintyParameters = cms.untracked.bool(True),
producedEcalClusterEnergyCorrectionParameters = cms.untracked.bool(True),
producedEcalClusterEnergyCorrectionObjectSpecificParameters = cms.untracked.bool(True),

producedEcalSamplesCorrelation = cms.untracked.bool(True),
getSamplesCorrelationFromFile = cms.untracked.bool(True),
SamplesCorrelationFile = cms.untracked.string('CondTools/Ecal/python/EcalSamplesCorrelation.txt')
)
18 changes: 12 additions & 6 deletions CondTools/Ecal/python/EcalTrivialAlignment_cfi.py
@@ -1,10 +1,16 @@
import FWCore.ParameterSet.Config as cms

EcalTrivialConditionRetriever = cms.ESSource("EcalTrivialConditionRetriever",
getEEAlignmentFromFile = cms.untracked.bool(True),
EEAlignmentFile = cms.untracked.string('CalibCalorimetry/EcalTrivialCondModules/data/EEAlignment_2010.txt'),
getESAlignmentFromFile = cms.untracked.bool(True),
ESAlignmentFile = cms.untracked.string('CalibCalorimetry/EcalTrivialCondModules/data/ESAlignment_2010.txt'),
getEBAlignmentFromFile = cms.untracked.bool(True),
EBAlignmentFile = cms.untracked.string('CalibCalorimetry/EcalTrivialCondModules/data/EBAlignment_2010.txt')
producedEcalClusterLocalContCorrParameters = cms.untracked.bool(True),
producedEcalClusterCrackCorrParameters = cms.untracked.bool(True),
producedEcalClusterEnergyUncertaintyParameters = cms.untracked.bool(True),
producedEcalClusterEnergyCorrectionParameters = cms.untracked.bool(True),
producedEcalClusterEnergyCorrectionObjectSpecificParameters = cms.untracked.bool(True),

getEEAlignmentFromFile = cms.untracked.bool(True),
EEAlignmentFile = cms.untracked.string('CalibCalorimetry/EcalTrivialCondModules/data/EEAlignment_2010.txt'),
getESAlignmentFromFile = cms.untracked.bool(True),
ESAlignmentFile = cms.untracked.string('CalibCalorimetry/EcalTrivialCondModules/data/ESAlignment_2010.txt'),
getEBAlignmentFromFile = cms.untracked.bool(True),
EBAlignmentFile = cms.untracked.string('CalibCalorimetry/EcalTrivialCondModules/data/EBAlignment_2010.txt')
)

0 comments on commit bf2021c

Please sign in to comment.