CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/CalibCalorimetry/EcalTrivialCondModules/interface/EcalTrivialConditionRetriever.h

Go to the documentation of this file.
00001 //
00002 // $Id: EcalTrivialConditionRetriever.h,v 1.31 2011/11/02 09:35:20 fay Exp $
00003 // Created: 2 Mar 2006
00004 //          Shahram Rahatlou, University of Rome & INFN
00005 //
00006 #ifndef CalibCalorimetry_EcalPlugins_EcalTrivialConditionRetriever_H
00007 #define CalibCalorimetry_EcalPlugins_EcalTrivialConditionRetriever_H
00008 // system include files
00009 #include <string>
00010 #include <vector>
00011 
00012 // user include files
00013 #include "FWCore/Framework/interface/ESProducer.h"
00014 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
00015 
00016 #include "CondFormats/EcalObjects/interface/EcalPedestals.h"
00017 #include "CondFormats/DataRecord/interface/EcalPedestalsRcd.h"
00018 
00019 #include "CondFormats/EcalObjects/interface/EcalDCSTowerStatus.h"
00020 #include "CondFormats/DataRecord/interface/EcalDCSTowerStatusRcd.h"
00021 #include "CondFormats/EcalObjects/interface/EcalDAQTowerStatus.h"
00022 #include "CondFormats/DataRecord/interface/EcalDAQTowerStatusRcd.h"
00023 
00024 #include "CondFormats/EcalObjects/interface/EcalXtalGroupId.h"
00025 #include "CondFormats/EcalObjects/interface/EcalWeightXtalGroups.h"
00026 #include "CondFormats/DataRecord/interface/EcalWeightXtalGroupsRcd.h"
00027 
00028 #include "CondFormats/EcalObjects/interface/EcalWeight.h"
00029 #include "CondFormats/EcalObjects/interface/EcalWeightSet.h"
00030 #include "CondFormats/EcalObjects/interface/EcalTBWeights.h"
00031 #include "CondFormats/DataRecord/interface/EcalTBWeightsRcd.h"
00032 
00033 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"
00034 #include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h"
00035 
00036 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstantsMC.h"
00037 #include "CondFormats/DataRecord/interface/EcalIntercalibConstantsMCRcd.h"
00038 
00039 #include "CondFormats/EcalObjects/interface/EcalIntercalibErrors.h"
00040 #include "CondFormats/DataRecord/interface/EcalIntercalibErrorsRcd.h"
00041 
00042 #include "CondFormats/EcalObjects/interface/EcalTimeCalibConstants.h"
00043 #include "CondFormats/DataRecord/interface/EcalTimeCalibConstantsRcd.h"
00044 
00045 #include "CondFormats/EcalObjects/interface/EcalTimeCalibErrors.h"
00046 #include "CondFormats/DataRecord/interface/EcalTimeCalibErrorsRcd.h"
00047 
00048 #include "CondFormats/EcalObjects/interface/EcalTimeOffsetConstant.h"
00049 #include "CondFormats/DataRecord/interface/EcalTimeOffsetConstantRcd.h"
00050 
00051 #include "CondFormats/EcalObjects/interface/EcalMGPAGainRatio.h"
00052 #include "CondFormats/EcalObjects/interface/EcalGainRatios.h"
00053 #include "CondFormats/DataRecord/interface/EcalGainRatiosRcd.h"
00054 
00055 #include "CondFormats/EcalObjects/interface/EcalADCToGeVConstant.h"
00056 #include "CondFormats/DataRecord/interface/EcalADCToGeVConstantRcd.h"
00057 
00058 #include "CondFormats/EcalObjects/interface/EcalLaserAlphas.h"
00059 #include "CondFormats/DataRecord/interface/EcalLaserAlphasRcd.h"
00060  
00061 #include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatiosRef.h"
00062 #include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRefRcd.h"
00063  
00064 #include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatios.h"
00065 #include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRcd.h"
00066 
00067 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
00068 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00069 
00070 #include "CondFormats/EcalObjects/interface/EcalDQMChannelStatus.h"
00071 #include "CondFormats/DataRecord/interface/EcalDQMChannelStatusRcd.h"
00072 #include "CondFormats/EcalObjects/interface/EcalDQMTowerStatus.h"
00073 #include "CondFormats/DataRecord/interface/EcalDQMTowerStatusRcd.h"
00074 
00075 #include "CondFormats/EcalObjects/interface/EcalClusterLocalContCorrParameters.h"
00076 #include "CondFormats/EcalObjects/interface/EcalClusterCrackCorrParameters.h"
00077 #include "CondFormats/EcalObjects/interface/EcalClusterEnergyCorrectionParameters.h"
00078 #include "CondFormats/EcalObjects/interface/EcalClusterEnergyUncertaintyParameters.h"
00079 #include "CondFormats/EcalObjects/interface/EcalClusterEnergyCorrectionObjectSpecificParameters.h"
00080 #include "CondFormats/DataRecord/interface/EcalClusterLocalContCorrParametersRcd.h"
00081 #include "CondFormats/DataRecord/interface/EcalClusterCrackCorrParametersRcd.h"
00082 #include "CondFormats/DataRecord/interface/EcalClusterEnergyCorrectionParametersRcd.h"
00083 #include "CondFormats/DataRecord/interface/EcalClusterEnergyUncertaintyParametersRcd.h"
00084 #include "CondFormats/DataRecord/interface/EcalClusterEnergyCorrectionObjectSpecificParametersRcd.h"
00085 #include "CondFormats/EcalObjects/interface/EcalTPGCrystalStatus.h"
00086 #include "CondFormats/DataRecord/interface/EcalTPGCrystalStatusRcd.h"
00087 #include "CondFormats/EcalObjects/interface/EcalMappingElectronics.h"
00088 #include "CondFormats/DataRecord/interface/EcalMappingElectronicsRcd.h"
00089 
00090 #include "FWCore/Framework/interface/IOVSyncValue.h"
00091 
00092 #include "CondFormats/Alignment/interface/Alignments.h"
00093 #include "CondFormats/AlignmentRecord/interface/EBAlignmentRcd.h"
00094 #include "CondFormats/AlignmentRecord/interface/EEAlignmentRcd.h"
00095 #include "CondFormats/AlignmentRecord/interface/ESAlignmentRcd.h"
00096 
00097 // forward declarations
00098 
00099 namespace edm{
00100   class ParameterSet;
00101 }
00102 
00103 class EcalTrivialConditionRetriever : public edm::ESProducer, 
00104                                       public edm::EventSetupRecordIntervalFinder
00105 {
00106 
00107 public:
00108   EcalTrivialConditionRetriever(const edm::ParameterSet&  pset);
00109   virtual ~EcalTrivialConditionRetriever();
00110 
00111   // ---------- member functions ---------------------------
00112   virtual std::auto_ptr<EcalPedestals> produceEcalPedestals( const EcalPedestalsRcd& );
00113   virtual std::auto_ptr<EcalWeightXtalGroups> produceEcalWeightXtalGroups( const EcalWeightXtalGroupsRcd& );
00114   virtual std::auto_ptr<EcalIntercalibConstants> produceEcalIntercalibConstants( const EcalIntercalibConstantsRcd& );
00115   virtual std::auto_ptr<EcalIntercalibConstantsMC> produceEcalIntercalibConstantsMC( const EcalIntercalibConstantsMCRcd& );
00116   virtual std::auto_ptr<EcalIntercalibErrors> produceEcalIntercalibErrors( const EcalIntercalibErrorsRcd& );
00117   virtual std::auto_ptr<EcalTimeCalibConstants> produceEcalTimeCalibConstants( const EcalTimeCalibConstantsRcd& );
00118   virtual std::auto_ptr<EcalTimeCalibErrors> produceEcalTimeCalibErrors( const EcalTimeCalibErrorsRcd& );
00119   virtual std::auto_ptr<EcalGainRatios> produceEcalGainRatios( const EcalGainRatiosRcd& );
00120   virtual std::auto_ptr<EcalADCToGeVConstant> produceEcalADCToGeVConstant( const EcalADCToGeVConstantRcd& );
00121   virtual std::auto_ptr<EcalTBWeights> produceEcalTBWeights( const EcalTBWeightsRcd& );
00122   virtual std::auto_ptr<EcalIntercalibConstants>  getIntercalibConstantsFromConfiguration ( const EcalIntercalibConstantsRcd& ) ;
00123   virtual std::auto_ptr<EcalIntercalibErrors>  getIntercalibErrorsFromConfiguration ( const EcalIntercalibErrorsRcd& ) ;
00124   virtual std::auto_ptr<EcalTimeCalibConstants>  getTimeCalibConstantsFromConfiguration ( const EcalTimeCalibConstantsRcd& ) ;
00125   virtual std::auto_ptr<EcalTimeCalibErrors>  getTimeCalibErrorsFromConfiguration ( const EcalTimeCalibErrorsRcd& ) ;
00126   virtual std::auto_ptr<EcalTimeOffsetConstant> produceEcalTimeOffsetConstant( const EcalTimeOffsetConstantRcd& );
00127 
00128   virtual std::auto_ptr<EcalLaserAlphas> produceEcalLaserAlphas( const EcalLaserAlphasRcd& );
00129   virtual std::auto_ptr<EcalLaserAPDPNRatiosRef> produceEcalLaserAPDPNRatiosRef( const EcalLaserAPDPNRatiosRefRcd& );
00130   virtual std::auto_ptr<EcalLaserAPDPNRatios> produceEcalLaserAPDPNRatios( const EcalLaserAPDPNRatiosRcd& );
00131 
00132   virtual std::auto_ptr<EcalClusterLocalContCorrParameters> produceEcalClusterLocalContCorrParameters( const EcalClusterLocalContCorrParametersRcd& );
00133   virtual std::auto_ptr<EcalClusterCrackCorrParameters> produceEcalClusterCrackCorrParameters( const EcalClusterCrackCorrParametersRcd& );
00134   virtual std::auto_ptr<EcalClusterEnergyCorrectionParameters> produceEcalClusterEnergyCorrectionParameters( const EcalClusterEnergyCorrectionParametersRcd& );
00135   virtual std::auto_ptr<EcalClusterEnergyUncertaintyParameters> produceEcalClusterEnergyUncertaintyParameters( const EcalClusterEnergyUncertaintyParametersRcd& );
00136   virtual std::auto_ptr<EcalClusterEnergyCorrectionObjectSpecificParameters> produceEcalClusterEnergyCorrectionObjectSpecificParameters( const EcalClusterEnergyCorrectionObjectSpecificParametersRcd& );
00137 
00138   virtual std::auto_ptr<EcalChannelStatus> produceEcalChannelStatus( const EcalChannelStatusRcd& );
00139   virtual std::auto_ptr<EcalChannelStatus> getChannelStatusFromConfiguration( const EcalChannelStatusRcd& );
00140 
00141   virtual std::auto_ptr<EcalTPGCrystalStatus> produceEcalTrgChannelStatus( const EcalTPGCrystalStatusRcd& );
00142   virtual std::auto_ptr<EcalTPGCrystalStatus> getTrgChannelStatusFromConfiguration( const EcalTPGCrystalStatusRcd& );
00143 
00144   virtual std::auto_ptr<EcalDCSTowerStatus> produceEcalDCSTowerStatus( const EcalDCSTowerStatusRcd& );
00145   virtual std::auto_ptr<EcalDAQTowerStatus> produceEcalDAQTowerStatus( const EcalDAQTowerStatusRcd& );
00146   virtual std::auto_ptr<EcalDQMTowerStatus> produceEcalDQMTowerStatus( const EcalDQMTowerStatusRcd& );
00147   virtual std::auto_ptr<EcalDQMChannelStatus> produceEcalDQMChannelStatus( const EcalDQMChannelStatusRcd& );
00148 
00149   virtual std::auto_ptr<EcalMappingElectronics> produceEcalMappingElectronics( const EcalMappingElectronicsRcd& );
00150   virtual std::auto_ptr<EcalMappingElectronics> getMappingFromConfiguration( const EcalMappingElectronicsRcd& );
00151 
00152   //  virtual std::auto_ptr<EcalAlignmentEB> produceEcalAlignmentEB( const EcalAlignmentEBRcd& );
00153   //  virtual std::auto_ptr<EcalAlignmentEE> produceEcalAlignmentEE( const EcalAlignmentEERcd& );
00154   //  virtual std::auto_ptr<EcalAlignmentES> produceEcalAlignmentES( const EcalAlignmentESRcd& );
00155   virtual std::auto_ptr<Alignments> produceEcalAlignmentEB( const EBAlignmentRcd& );
00156   virtual std::auto_ptr<Alignments> produceEcalAlignmentEE( const EEAlignmentRcd& );
00157   virtual std::auto_ptr<Alignments> produceEcalAlignmentES( const ESAlignmentRcd& );
00158 
00159 protected:
00160   //overriding from ContextRecordIntervalFinder
00161   virtual void setIntervalFor( const edm::eventsetup::EventSetupRecordKey&,
00162                                const edm::IOVSyncValue& ,
00163                                edm::ValidityInterval& ) ;
00164 private:
00165   EcalTrivialConditionRetriever( const EcalTrivialConditionRetriever& ); // stop default
00166   const  EcalTrivialConditionRetriever& operator=( const EcalTrivialConditionRetriever& ); // stop default
00167 
00168   void getWeightsFromConfiguration(const edm::ParameterSet& ps);
00169 
00170   // data members
00171   double adcToGeVEBConstant_;      // ADC -> GeV scale for barrel
00172   double adcToGeVEEConstant_;      // ADC -> GeV scale for endcap
00173 
00174   double intercalibConstantMean_;  // mean of intercalib constant. default: 1.0
00175   double intercalibConstantSigma_; // sigma of intercalib constant
00176 
00177   double intercalibConstantMeanMC_;  // mean of intercalib constant. default: 1.0
00178   double intercalibConstantSigmaMC_; // sigma of intercalib constant
00179                                   // Gaussian used to generate intercalib constants for
00180                                   // each channel. no smearing if sigma=0.0 (default)
00181   double intercalibErrorMean_;  // mean of intercalib constant error
00182 
00183   double timeCalibConstantMean_;
00184   double timeCalibConstantSigma_;
00185   double timeCalibErrorMean_;
00186 
00187   double timeOffsetEBConstant_;    
00188   double timeOffsetEEConstant_;    
00189 
00190   // cluster corrections
00191   std::vector<double> localContCorrParameters_;
00192   std::vector<double> crackCorrParameters_;
00193   std::vector<double> energyCorrectionParameters_;
00194   std::vector<double> energyUncertaintyParameters_;
00195   std::vector<double> energyCorrectionObjectSpecificParameters_;
00196 
00197   // laser
00198   double laserAlphaMean_;  
00199   double laserAlphaSigma_;  
00200   double laserAPDPNRefMean_;  
00201   double laserAPDPNRefSigma_;  
00202   double laserAPDPNMean_;  
00203   double laserAPDPNSigma_;  
00204   unsigned long laserAPDPNTime1_;
00205   unsigned long laserAPDPNTime2_;
00206   unsigned long laserAPDPNTime3_;
00207 
00208   double EBpedMeanX12_;              // pedestal mean pedestal at gain 12
00209   double EBpedRMSX12_;               // pedestal rms at gain 12
00210   double EBpedMeanX6_;               // pedestal mean pedestal at gain 6
00211   double EBpedRMSX6_;                // pedestal rms at gain 6
00212   double EBpedMeanX1_;               // pedestal mean pedestal at gain 1
00213   double EBpedRMSX1_;                // pedestal rms at gain 1
00214 
00215   double EEpedMeanX12_;              // pedestal mean pedestal at gain 12
00216   double EEpedRMSX12_;               // pedestal rms at gain 12
00217   double EEpedMeanX6_;               // pedestal mean pedestal at gain 6
00218   double EEpedRMSX6_;                // pedestal rms at gain 6
00219   double EEpedMeanX1_;               // pedestal mean pedestal at gain 1
00220   double EEpedRMSX1_;                // pedestal rms at gain 1
00221 
00222   double gainRatio12over6_;        // ratio of MGPA gain12 / gain6
00223   double gainRatio6over1_;         // ratio of MGPA gain6 / gain1
00224 
00225   std::vector< ROOT::Math::SVector<double,EcalDataFrame::MAXSAMPLES> > amplWeights_;  // weights to compute amplitudes after ped subtraction
00226   std::vector< ROOT::Math::SVector<double,EcalDataFrame::MAXSAMPLES> > amplWeightsAft_;  // weights to compute amplitudes after ped subtraction
00227 
00228   std::vector< ROOT::Math::SVector<double,EcalDataFrame::MAXSAMPLES> > pedWeights_;  // weights to compute amplitudes w/o ped subtraction
00229   std::vector< ROOT::Math::SVector<double,EcalDataFrame::MAXSAMPLES> > pedWeightsAft_;  // weights to compute amplitudes w/o ped subtraction
00230 
00231   std::vector< ROOT::Math::SVector<double,EcalDataFrame::MAXSAMPLES> > jittWeights_;  // weights to compute jitter
00232   std::vector< ROOT::Math::SVector<double,EcalDataFrame::MAXSAMPLES> > jittWeightsAft_;  // weights to compute jitter
00233 
00234   std::vector< EcalWeightSet::EcalChi2WeightMatrix > chi2Matrix_;
00235   std::vector< EcalWeightSet::EcalChi2WeightMatrix > chi2MatrixAft_;
00236 
00237   std::string amplWeightsFile_;
00238   std::string amplWeightsAftFile_;
00239   std::string pedWeightsFile_;
00240   std::string pedWeightsAftFile_;
00241   std::string jittWeightsFile_; 
00242   std::string jittWeightsAftFile_; 
00243   std::string chi2MatrixFile_;
00244   std::string chi2MatrixAftFile_;
00245   std::string intercalibConstantsFile_ ;
00246   std::string intercalibErrorsFile_ ;
00247   std::string timeCalibConstantsFile_ ;
00248   std::string timeCalibErrorsFile_ ;
00249   std::string channelStatusFile_ ;
00250   std::string trgChannelStatusFile_ ;
00251   std::string mappingFile_ ;
00252   std::string EBAlignmentFile_;
00253   std::string EEAlignmentFile_;
00254   std::string ESAlignmentFile_;
00255   std::string EBLaserAlphaFile_;
00256   std::string EELaserAlphaFile_;
00257 
00258   int nTDCbins_;
00259 
00260   bool getWeightsFromFile_;
00261   bool weightsForAsynchronousRunning_;
00262   bool producedEcalPedestals_;
00263   bool producedEcalWeights_;
00264   bool producedEcalIntercalibConstants_;
00265   bool producedEcalIntercalibConstantsMC_;
00266   bool producedEcalIntercalibErrors_;
00267   bool producedEcalTimeCalibConstants_;
00268   bool producedEcalTimeCalibErrors_;
00269   bool producedEcalTimeOffsetConstant_;
00270   bool producedEcalGainRatios_;
00271   bool producedEcalADCToGeVConstant_;
00272   bool producedEcalLaserCorrection_;
00273   bool producedEcalChannelStatus_;
00274   bool producedEcalDQMTowerStatus_;
00275   bool producedEcalDQMChannelStatus_;
00276   bool producedEcalDCSTowerStatus_;
00277   bool producedEcalDAQTowerStatus_;
00278   bool producedEcalTrgChannelStatus_;
00279   bool producedEcalClusterLocalContCorrParameters_;
00280   bool producedEcalClusterCrackCorrParameters_;
00281   bool producedEcalClusterEnergyCorrectionParameters_;
00282   bool producedEcalClusterEnergyUncertaintyParameters_;
00283   bool producedEcalClusterEnergyCorrectionObjectSpecificParameters_;
00284   bool producedEcalMappingElectronics_;
00285   bool producedEcalAlignmentEB_;
00286   bool producedEcalAlignmentEE_;
00287   bool producedEcalAlignmentES_;
00288   bool getEBAlignmentFromFile_;
00289   bool getEEAlignmentFromFile_;
00290   bool getESAlignmentFromFile_;
00291   bool getLaserAlphaFromFile_;
00292 
00293   int    verbose_; // verbosity
00294 
00295 };
00296 #endif