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

Ecal samples correlation #6703

Merged
merged 2 commits into from Dec 9, 2014
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
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')
)