File indexing completed on 2023-03-17 10:49:41
0001 #ifndef DIGIECAL_ECALDIGICOLLECTION_H
0002 #define DIGIECAL_ECALDIGICOLLECTION_H
0003
0004 #include "DataFormats/EcalDigi/interface/EBDataFrame.h"
0005 #include "DataFormats/EcalDigi/interface/EcalDataFrame_Ph2.h"
0006 #include "DataFormats/EcalDigi/interface/EEDataFrame.h"
0007 #include "DataFormats/EcalDigi/interface/ESDataFrame.h"
0008 #include "DataFormats/EcalDigi/interface/EcalTimeDigi.h"
0009 #include "DataFormats/EcalDigi/interface/EcalTriggerPrimitiveDigi.h"
0010 #include "DataFormats/EcalDigi/interface/EcalEBTriggerPrimitiveDigi.h"
0011 #include "DataFormats/EcalDigi/interface/EcalTrigPrimCompactColl.h"
0012 #include "DataFormats/EcalDigi/interface/EcalPseudoStripInputDigi.h"
0013 #include "DataFormats/EcalDigi/interface/EBSrFlag.h"
0014 #include "DataFormats/EcalDigi/interface/EESrFlag.h"
0015 #include "DataFormats/EcalDigi/interface/EcalPnDiodeDigi.h"
0016 #include "DataFormats/EcalDigi/interface/EcalMatacqDigi.h"
0017 #include "DataFormats/Common/interface/SortedCollection.h"
0018
0019 #include "DataFormats/DetId/interface/DetId.h"
0020 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
0021 #include "DataFormats/Common/interface/DataFrameContainer.h"
0022 #include "DataFormats/EcalDigi/interface/EcalConstants.h"
0023
0024 class EcalDigiCollectionPh2 : public edm::DataFrameContainer {
0025 public:
0026 typedef edm::DataFrameContainer::size_type size_type;
0027 static const size_type MAXSAMPLES = ecalPh2::sampleSize;
0028 explicit EcalDigiCollectionPh2(size_type istride = MAXSAMPLES, int isubdet = 0)
0029 : edm::DataFrameContainer(istride, isubdet) {}
0030 void swap(DataFrameContainer& other) { this->DataFrameContainer::swap(other); }
0031 };
0032
0033 class EBDigiCollectionPh2 : public EcalDigiCollectionPh2 {
0034 public:
0035 typedef edm::DataFrameContainer::size_type size_type;
0036 typedef EcalDataFrame_Ph2 Digi;
0037 typedef Digi::key_type DetId;
0038
0039 EBDigiCollectionPh2(size_type istride = MAXSAMPLES) : EcalDigiCollectionPh2(istride, EcalBarrel) {}
0040 void swap(EBDigiCollectionPh2& other) { this->EcalDigiCollectionPh2::swap(other); }
0041 void push_back(const Digi& digi) { DataFrameContainer::push_back(digi.id(), digi.frame().begin()); }
0042 void push_back(id_type iid) { DataFrameContainer::push_back(iid); }
0043 void push_back(id_type iid, data_type const* idata) { DataFrameContainer::push_back(iid, idata); }
0044 };
0045
0046 class EcalDigiCollection : public edm::DataFrameContainer {
0047 public:
0048 typedef edm::DataFrameContainer::size_type size_type;
0049 static const size_type MAXSAMPLES = 10;
0050 explicit EcalDigiCollection(size_type istride = MAXSAMPLES, int isubdet = 0)
0051 : edm::DataFrameContainer(istride, isubdet) {}
0052 void swap(DataFrameContainer& other) { this->DataFrameContainer::swap(other); }
0053 };
0054
0055
0056 class EBDigiCollection : public EcalDigiCollection {
0057 public:
0058 typedef edm::DataFrameContainer::size_type size_type;
0059 typedef EBDataFrame Digi;
0060 typedef Digi::key_type DetId;
0061
0062 EBDigiCollection(size_type istride = MAXSAMPLES) : EcalDigiCollection(istride, EcalBarrel) {}
0063 void swap(EBDigiCollection& other) { this->EcalDigiCollection::swap(other); }
0064 void push_back(const Digi& digi) { DataFrameContainer::push_back(digi.id(), digi.frame().begin()); }
0065 void push_back(id_type iid) { DataFrameContainer::push_back(iid); }
0066 void push_back(id_type iid, data_type const* idata) { DataFrameContainer::push_back(iid, idata); }
0067 };
0068
0069 class EEDigiCollection : public EcalDigiCollection {
0070 public:
0071 typedef edm::DataFrameContainer::size_type size_type;
0072 typedef EEDataFrame Digi;
0073 typedef Digi::key_type DetId;
0074
0075 EEDigiCollection(size_type istride = MAXSAMPLES) : EcalDigiCollection(istride, EcalEndcap) {}
0076 void swap(EEDigiCollection& other) { this->EcalDigiCollection::swap(other); }
0077 void push_back(const Digi& digi) { edm::DataFrameContainer::push_back(digi.id(), digi.frame().begin()); }
0078 void push_back(id_type iid) { DataFrameContainer::push_back(iid); }
0079 void push_back(id_type iid, data_type const* idata) { DataFrameContainer::push_back(iid, idata); }
0080 };
0081
0082 class ESDigiCollection : public EcalDigiCollection {
0083 public:
0084 typedef edm::DataFrameContainer::size_type size_type;
0085 typedef ESDataFrame Digi;
0086 typedef Digi::key_type DetId;
0087
0088 static const size_type NSAMPLE = ESDataFrame::MAXSAMPLES;
0089 ESDigiCollection(size_type istride = NSAMPLE) : EcalDigiCollection(istride, EcalPreshower) {}
0090 void swap(ESDigiCollection& other) { this->EcalDigiCollection::swap(other); }
0091
0092 void push_back(unsigned int i) { DataFrameContainer::push_back(i); }
0093
0094 void push_back(const Digi& digi) {
0095 uint16_t esdata[NSAMPLE];
0096 for (unsigned int i(0); i != NSAMPLE; ++i) {
0097 static const int offset(65536);
0098 const int16_t dshort(digi[i].raw());
0099 const int dint((int)dshort +
0100 ((int16_t)0 > dshort ? offset : (int)0));
0101 esdata[i] = dint;
0102 }
0103 EcalDigiCollection::push_back(digi.id()(), esdata);
0104 }
0105 };
0106
0107
0108 inline void swap(EcalDigiCollection& lhs, EcalDigiCollection& rhs) { lhs.swap(rhs); }
0109
0110 inline void swap(EBDigiCollection& lhs, EBDigiCollection& rhs) { lhs.swap(rhs); }
0111
0112 inline void swap(EEDigiCollection& lhs, EEDigiCollection& rhs) { lhs.swap(rhs); }
0113
0114 inline void swap(ESDigiCollection& lhs, ESDigiCollection& rhs) { lhs.swap(rhs); }
0115
0116 inline void swap(EcalDigiCollectionPh2& lhs, EcalDigiCollectionPh2& rhs) { lhs.swap(rhs); }
0117
0118 inline void swap(EBDigiCollectionPh2& lhs, EBDigiCollectionPh2& rhs) { lhs.swap(rhs); }
0119
0120 typedef edm::SortedCollection<EcalTimeDigi> EcalTimeDigiCollection;
0121 typedef edm::SortedCollection<EcalTriggerPrimitiveDigi> EcalTrigPrimDigiCollection;
0122 typedef edm::SortedCollection<EcalEBTriggerPrimitiveDigi> EcalEBTrigPrimDigiCollection;
0123
0124 typedef edm::SortedCollection<EcalPseudoStripInputDigi> EcalPSInputDigiCollection;
0125 typedef edm::SortedCollection<EBSrFlag> EBSrFlagCollection;
0126 typedef edm::SortedCollection<EESrFlag> EESrFlagCollection;
0127 typedef edm::SortedCollection<EcalPnDiodeDigi> EcalPnDiodeDigiCollection;
0128 typedef edm::SortedCollection<EcalMatacqDigi> EcalMatacqDigiCollection;
0129
0130 #endif