64 _nsamples( iConfig.getUntrackedParameter< unsigned
int >(
"nSamples", 10 ) ),
65 _presample( iConfig.getUntrackedParameter< unsigned
int >(
"nPresamples", 2 ) ),
66 _firstsample( iConfig.getUntrackedParameter< unsigned
int >(
"firstSample", 1 ) ),
67 _lastsample( iConfig.getUntrackedParameter< unsigned
int >(
"lastSample", 2 ) ),
68 _nsamplesPN( iConfig.getUntrackedParameter< unsigned
int >(
"nSamplesPN", 50 ) ),
69 _presamplePN( iConfig.getUntrackedParameter< unsigned
int >(
"nPresamplesPN", 6 ) ),
70 _firstsamplePN( iConfig.getUntrackedParameter< unsigned
int >(
"firstSamplePN", 7 ) ),
71 _lastsamplePN( iConfig.getUntrackedParameter< unsigned
int >(
"lastSamplePN", 8 ) ),
72 _timingcutlow( iConfig.getUntrackedParameter< unsigned
int >(
"timingCutLow", 2 ) ),
73 _timingcuthigh( iConfig.getUntrackedParameter< unsigned
int >(
"timingCutHigh", 9 ) ),
74 _timingquallow( iConfig.getUntrackedParameter< unsigned
int >(
"timingQualLow", 3 ) ),
75 _timingqualhigh( iConfig.getUntrackedParameter< unsigned
int >(
"timingQualHigh", 8 ) ),
76 _ratiomincutlow( iConfig.getUntrackedParameter< double >(
"ratioMinCutLow", 0.4 ) ),
77 _ratiomincuthigh( iConfig.getUntrackedParameter< double >(
"ratioMinCutHigh", 0.95 ) ),
78 _ratiomaxcutlow( iConfig.getUntrackedParameter< double >(
"ratioMaxCutLow", 0.8 ) ),
79 _presamplecut( iConfig.getUntrackedParameter< double >(
"presampleCut", 5.0 ) ),
80 _niter( iConfig.getUntrackedParameter< unsigned
int >(
"nIter", 3 ) ),
81 _fitab( iConfig.getUntrackedParameter<
bool >(
"fitAB",
false ) ),
82 _alpha( iConfig.getUntrackedParameter< double >(
"alpha", 1.5076494 ) ),
83 _beta( iConfig.getUntrackedParameter< double >(
"beta", 1.5136036 ) ),
84 _nevtmax( iConfig.getUntrackedParameter< unsigned
int >(
"nEvtMax", 200 ) ),
85 _noise( iConfig.getUntrackedParameter< double >(
"noise", 2.0 ) ),
86 _chi2cut( iConfig.getUntrackedParameter< double >(
"chi2cut", 10.0 ) ),
87 _ecalPart( iConfig.getUntrackedParameter<
std::
string >(
"ecalPart",
"EB" ) ),
88 _docorpn( iConfig.getUntrackedParameter<
bool >(
"doCorPN",
false ) ),
89 _fedid( iConfig.getUntrackedParameter<
int >(
"fedID", -999 ) ),
90 _saveallevents( iConfig.getUntrackedParameter<
bool >(
"saveAllEvents",
false ) ),
91 _qualpercent( iConfig.getUntrackedParameter< double >(
"qualPercent", 0.2 ) ),
92 _debug( iConfig.getUntrackedParameter<
int >(
"debug", 0 ) ),
97 runType(-1), runNum(0), fedID(-1), dccID(-1), side(2), lightside(2), iZ(1),
98 phi(-1),
eta(-1),
event(0),
color(-1),pn0(0), pn1(0), apdAmpl(0), apdAmplA(0),
99 apdAmplB(0),apdTime(0),pnAmpl(0),
100 pnID(-1), moduleID(-1), channelIteratorEE(0)
135 for(
unsigned int j=0;j<
nCrys;j++){
147 for(
unsigned int j=0;j<
nMod;j++){
203 ADCfile+=
"/APDSamplesLaser.root";
206 APDfile+=
"/APDPNLaserAllEvents.root";
212 std::stringstream
name;
213 name <<
"ADCTree" <<
i+1;
214 ADCtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
252 std::stringstream nameabinitfile;
253 nameabinitfile <<
resdir_ <<
"/ABInit.root";
256 std::stringstream nameabfile;
257 nameabfile << resdir_ <<
"/AB.root";
265 if(test ==
nullptr) {
271 TFile *fAB=
nullptr; TTree *ABInit=
nullptr;
273 fAB=
new TFile(nameabinitfile.str().c_str());
276 ABInit = (TTree*) fAB->Get(
"ABCol0");
297 std::stringstream nameapdfile;
298 nameapdfile << resdir_ <<
"/APDPN_LASER.root";
320 DCCHeader=pDCCHeader.
product();
322 std::cerr <<
"Error! can't get the product retrieving DCC header" <<
339 std::cerr <<
"Error! can't get the product retrieving EB crystal data " <<
347 std::cerr <<
"Error! can't get the product retrieving EE crystal data " <<
351 std::cout <<
" Wrong ecalPart in cfg file " << std::endl;
372 TheMapping = ecalmapping.
product();
374 std::cerr <<
"Error! can't get the product EcalMappingRcd"<< std::endl;
383 headerItr != DCCHeader->
end(); ++headerItr ) {
387 int fed = headerItr->fedId();
390 runType=headerItr->getRunType();
391 runNum=headerItr->getRunNumber();
392 event=headerItr->getLV1();
394 dccID=headerItr->getDccInTCCCommand();
395 fedID=headerItr->fedId();
413 if(
color<0 )
return;
439 unsigned int samplemax=0;
442 std::map <int, std::vector<double> > allPNAmpl;
443 std::map <int, std::vector<double> > allPNGain;
449 pnItr != PNDigi->
end(); ++pnItr ) {
454 pnDetId.
iPnId()<<
", dccID="<< pnDetId.
iDCCId()<< std::endl;
459 if(!isMemRelevant)
continue;
463 for (
int samId=0; samId < (*pnItr).size() ; samId++ ) {
464 pn[samId]=(*pnItr).sample(samId).adc();
465 pnG[samId]=(*pnItr).sample(samId).gainId();
466 if (samId==0) pnGain=
pnG[samId];
470 if( pnGain!=1 )
std::cout <<
"PN gain different from 1"<< std::endl;
477 chi2pn = pnfit -> doFit(samplemax,&
pnNoPed[0]);
478 if(chi2pn == 101 || chi2pn == 102 || chi2pn == 103)
pnAmpl=0.;
479 else pnAmpl= pnfit -> getAmpl();
492 pnAmpl<<
", PNgain="<< pnGain<<std::endl;
507 digiItr != EBDigi->
end(); ++digiItr ) {
512 EBDetId id_crystal(digiItr->id()) ;
516 int etaG = id_crystal.ieta() ;
517 int phiG = id_crystal.iphi() ;
521 int etaL=LocalCoord.first ;
522 int phiL=LocalCoord.second ;
525 int xtal=elecid_crystal.
xtalId();
528 int tower=elecid_crystal.
towerId();
533 unsigned int MyPn0=pnpair.first;
534 unsigned int MyPn1=pnpair.second;
538 assert( channel <
nCrys );
540 setGeomEB(etaG, phiG, module, tower, strip, xtal, apdRefTT, channel, lmr);
543 " channelID:" <<
channelID<<
" module:"<< module<<
544 " modules:"<<
modules.size()<< std::endl;
551 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
554 adc[
i]=samp_crystal.adc() ;
555 adcG[
i]=samp_crystal.gainId();
557 if (
i==0) adcGain=
adcG[
i];
576 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
578 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
606 digiItr != EEDigi->
end(); ++digiItr ) {
611 EEDetId id_crystal(digiItr->id()) ;
615 int etaG = id_crystal.iy() ;
616 int phiG = id_crystal.ix() ;
618 int iX = (phiG-1)/5+1;
619 int iY = (etaG-1)/5+1;
621 int tower=elecid_crystal.
towerId();
625 if( module>=18 &&
side==1 ) module+=2;
631 unsigned int MyPn0=pnpair.first;
632 unsigned int MyPn1=pnpair.second;
640 assert ( channel <
nCrys );
642 setGeomEE(etaG, phiG, iX, iY,
iZ, module, tower, ch, apdRefTT, channel, lmr);
646 " channelID:" <<
channelID<<
" module:"<< module<<
647 " modules:"<<
modules.size()<< std::endl;
652 if( (*digiItr).size()>10)
std::cout <<
"SAMPLES SIZE > 10!" << (*digiItr).size()<< std::endl;
656 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
659 adc[
i]=samp_crystal.adc() ;
660 adcG[
i]=samp_crystal.gainId();
663 if (
i==0) adcGain=
adcG[
i];
683 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
685 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
738 std::cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
739 std::cout <<
"\t+=+ Analyzing data: getting (alpha, beta) +=+" << std::endl;
740 TFile *fAB=
nullptr; TTree *ABInit=
nullptr;
745 ABInit = (TTree*) fAB->Get(
"ABCol0");
748 std::cout <<
"\t+=+ .................................... done +=+" << std::endl;
749 std::cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
759 std::stringstream del;
761 system(del.str().c_str());
762 std::cout <<
" No Laser Events "<< std::endl;
769 double BadGainEvtPercentage=0.0;
770 double BadTimingEvtPercentage=0.0;
773 int nChanBadTiming=0;
790 double BadGainChanPercentage=double(nChanBadGain)/double(nCrys);
791 double BadTimingChanPercentage=double(nChanBadTiming)/double(nCrys);
799 std::cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
800 std::cout <<
"\t+=+ Analyzing laser data: getting APD, PN, APD/PN, PN/PN +=+" << std::endl;
803 std::cout <<
"\t+=+ ............................ WARNING! APD GAIN WAS NOT 1 +=+" << std::endl;
805 std::cout <<
"\t+=+ ............................ WARNING! TIMING WAS BAD +=+" << std::endl;
814 std::stringstream
name;
815 name <<
"APDTree" <<
i+1;
817 APDtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
823 APDtrees[
i]->Branch(
"iphi", &iphi,
"iphi/I" );
824 APDtrees[
i]->Branch(
"ieta", &ieta,
"ieta/I" );
827 APDtrees[
i]->Branch(
"towerID", &towerID,
"towerID/I" );
828 APDtrees[
i]->Branch(
"channelID", &channelID,
"channelID/I" );
832 APDtrees[
i]->Branch(
"flag", &flag,
"flag/I" );
839 APDtrees[
i]->SetBranchAddress(
"iphi", &iphi );
840 APDtrees[
i]->SetBranchAddress(
"ieta", &ieta );
843 APDtrees[
i]->SetBranchAddress(
"towerID", &towerID );
844 APDtrees[
i]->SetBranchAddress(
"channelID", &channelID );
848 APDtrees[
i]->SetBranchAddress(
"flag", &flag );
856 for (
unsigned int iref=0;iref<
nRefChan;iref++){
857 for (
unsigned int imod=0;imod<
nMod;imod++){
861 std::stringstream nameref;
862 nameref <<
"refAPDTree" <<imod<<
"_"<<iref;
864 RefAPDtrees[iref][jmod]=
new TTree(nameref.str().c_str(),nameref.str().c_str());
880 unsigned int nCol=
colors.size();
885 for (
unsigned int iM=0;iM<
nMod;iM++){
886 unsigned int iMod=
modules[iM]-1;
888 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
889 for (
unsigned int icol=0;icol<nCol;icol++){
905 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
906 for (
unsigned int icol=0;icol<nCol;icol++){
913 std::stringstream
cut;
914 cut <<
"color=="<<
colors[icol];
919 unsigned int iMod=
iModule[iCry]-1;
925 Long64_t nbytes = 0, nb = 0;
926 for (Long64_t jentry=0; jentry<
ADCtrees[iCry]->GetEntriesFast();jentry++){
927 nb =
ADCtrees[iCry]->GetEntry(jentry); nbytes += nb;
932 for(
unsigned int i=0;
i<nCol;
i++){
963 chi2 = pslsfit -> doFit(&
adcNoPed[0]);
965 if( chi2 < 0. || chi2 == 102 || chi2 == 101 ) {
970 apdAmpl = pslsfit -> getAmpl();
981 ", apdTime="<<
apdTime<< std::endl;
983 if (pn0<10 && pn1>10) {
985 }
else if (pn1<10 && pn0>10){
987 }
else pnmean=0.5*(
pn0+
pn1);
995 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1017 for(
unsigned int ir=0;ir<
nRefChan;ir++){
1036 std::stringstream del;
1038 system(del.str().c_str());
1046 for (
unsigned int iColor=0;iColor<nCol;iColor++){
1048 std::stringstream nametree;
1049 nametree <<
"APDCol"<<
colors[iColor];
1050 std::stringstream nametree2;
1051 nametree2 <<
"PNCol"<<colors[iColor];
1053 restrees[iColor]=
new TTree(nametree.str().c_str(),nametree.str().c_str());
1054 respntrees[iColor]=
new TTree(nametree2.str().c_str(),nametree2.str().c_str());
1056 restrees[iColor]->Branch(
"iphi", &iphi,
"iphi/I" );
1057 restrees[iColor]->Branch(
"ieta", &ieta,
"ieta/I" );
1061 restrees[iColor]->Branch(
"towerID", &towerID,
"towerID/I" );
1062 restrees[iColor]->Branch(
"channelID", &channelID,
"channelID/I" );
1063 restrees[iColor]->Branch(
"APD", &
APD,
"APD[6]/D" );
1064 restrees[iColor]->Branch(
"Time", &
Time,
"Time[6]/D" );
1070 restrees[iColor]->Branch(
"flag", &flag,
"flag/I" );
1072 respntrees[iColor]->Branch(
"side", &
side,
"side/I" );
1073 respntrees[iColor]->Branch(
"moduleID", &
moduleID,
"moduleID/I" );
1074 respntrees[iColor]->Branch(
"pnID", &
pnID,
"pnID/I" );
1075 respntrees[iColor]->Branch(
"PN", &
PN,
"PN[6]/D" );
1076 respntrees[iColor]->Branch(
"PNoPN", &
PNoPN,
"PNoPN[6]/D" );
1077 respntrees[iColor]->Branch(
"PNoPNA", &
PNoPNA,
"PNoPNA[6]/D" );
1078 respntrees[iColor]->Branch(
"PNoPNB", &
PNoPNB,
"PNoPNB[6]/D" );
1080 restrees[iColor]->SetBranchAddress(
"iphi", &iphi );
1081 restrees[iColor]->SetBranchAddress(
"ieta", &ieta );
1085 restrees[iColor]->SetBranchAddress(
"towerID", &towerID );
1086 restrees[iColor]->SetBranchAddress(
"channelID", &channelID );
1094 restrees[iColor]->SetBranchAddress(
"flag", &flag );
1096 respntrees[iColor]->SetBranchAddress(
"side", &
side );
1097 respntrees[iColor]->SetBranchAddress(
"moduleID", &
moduleID );
1098 respntrees[iColor]->SetBranchAddress(
"pnID", &
pnID );
1099 respntrees[iColor]->SetBranchAddress(
"PN",
PN );
1100 respntrees[iColor]->SetBranchAddress(
"PNoPN",
PNoPN );
1101 respntrees[iColor]->SetBranchAddress(
"PNoPNA",
PNoPNA );
1102 respntrees[iColor]->SetBranchAddress(
"PNoPNB",
PNoPNB );
1109 for (
unsigned int iM=0;iM<
nMod;iM++){
1110 unsigned int iMod=
modules[iM]-1;
1112 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
1113 for (
unsigned int icol=0;icol<nCol;icol++){
1122 for(
unsigned int imod=0;imod<
nMod;imod++){
1134 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
1136 unsigned int iMod=
iModule[iCry]-1;
1141 for(
unsigned int iCol=0;iCol<nCol;iCol++){
1143 std::vector<double> lowcut;
1144 std::vector<double> highcut;
1149 if(cutMin<0) cutMin=0;
1152 lowcut.push_back(cutMin);
1153 highcut.push_back(cutMax);
1157 lowcut.push_back(cutMin);
1158 highcut.push_back(cutMax);
1174 Long64_t nbytes = 0, nb = 0;
1175 for (Long64_t jentry=0; jentry<
APDtrees[iCry]->GetEntriesFast();jentry++) {
1176 nb =
APDtrees[iCry]->GetEntry(jentry); nbytes += nb;
1179 if (pn0<10 && pn1>10) {
1181 }
else if (pn1<10 && pn0>10){
1183 }
else pnmean=0.5*(
pn0+
pn1);
1188 unsigned int iCol=0;
1189 for(
unsigned int i=0;
i<nCol;
i++){
1200 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1208 if (
_debug==1)
std::cout <<
"-- debug test -- Last Loop event:"<<
event<<
" apdAmpl:"<<
apdAmpl<< std::endl;
1212 for (
unsigned int iRef=0;iRef<
nRefChan;iRef++){
1233 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1235 std::vector<double> apdvec =
APDAnal[iCry][iColor]->
getAPD();
1244 for(
unsigned int i=0;
i<apdvec.size();
i++){
1246 APD[
i]=apdvec.at(
i);
1278 for (
unsigned int iM=0;iM<
nMod;iM++){
1279 unsigned int iMod=
modules[iM]-1;
1283 for (
unsigned int ch=0;ch<
nPNPerMod;ch++){
1290 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1292 std::vector<double> pnvec =
PNAnal[iMod][ch][iColor]->
getPN();
1293 std::vector<double> pnopnvec =
PNAnal[iMod][ch][iColor]->
getPNoPN();
1294 std::vector<double> pnopn0vec =
PNAnal[iMod][ch][iColor]->
getPNoPN0();
1295 std::vector<double> pnopn1vec =
PNAnal[iMod][ch][iColor]->
getPNoPN1();
1297 for(
unsigned int i=0;
i<pnvec.size();
i++){
1318 std::stringstream del2;
1320 system(del2.str().c_str());
1334 for (
unsigned int i=0;
i<nCol;
i++){
1341 std::cout <<
"\t+=+ .................................................. done +=+" << std::endl;
1342 std::cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
1358 for (
unsigned int iref=0;iref<
nRefChan;iref++){
1381 void EcalLaserAnalyzer::setGeomEE(
int etaG,
int phiG,
int iX,
int iY,
int iZ,
int module,
int tower,
int ch ,
int apdRefTT,
int channel,
int lmr){
1394 for (
unsigned int iref=0;iref<
nRefChan;iref++){
unsigned int _firstsamplePN
void addEntry(double val)
static XYCoord localCoord(int icr)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
static int lmmod(SuperCrysCoord iX, SuperCrysCoord iY)
TAPD * APDAnal[1700][nColor]
void setAPDCut(double, double)
TPN * PNFirstAnal[22][2][nColor]
int xtalId() const
get the channel id
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
std::vector< double > getPN()
EcalLaserAnalyzer(const edm::ParameterSet &iConfig)
static int apdRefTower(int ilmr, int ilmmod)
void addEntry(double, double, double)
std::map< int, unsigned int > apdRefMap[2]
int stripId() const
get the tower id
std::string digiPNCollection_
double getDelta(int, int)
std::vector< double > getPNoPN1()
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
~EcalLaserAnalyzer() override
static int side(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
void setPNCut(double, double)
void addEntry(double, double, double, double, double, double, double)
double getPNCorrectionFactor(double val0, int gain)
std::vector< T >::const_iterator const_iterator
unsigned int _timingcuthigh
void computeShape(std::string namefile, TTree *)
int towerId() const
get the tower id
double * getAdcWithoutPedestal()
const_iterator begin() const
static int lmr(EBGlobalCoord ieta, EBGlobalCoord iphi)
unsigned int _timingcutlow
TPN * PNAnal[22][2][nColor]
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
unsigned int _timingquallow
std::vector< double > getAPDoPN0()
void setTimeCut(double, double)
TTree * RefAPDtrees[2][22]
static std::pair< int, int > pn(int ilmmod)
void set2DAPDoAPD1Cut(const std::vector< double > &, const std::vector< double > &)
void setAPDoPN0Cut(double, double)
std::vector< double > getPNoPN0()
std::vector< double > getAPDoPN1()
std::string digiProducer_
int iPnId() const
get the PnId
int hashedIndex(int ieta, int iphi)
EcalElectronicsId getElectronicsId(const DetId &id) const
Get the electronics id for this det id.
static std::pair< int, int > pn(int dee, int ilmod)
std::vector< double > getAPDoAPD0()
#define DEFINE_FWK_MODULE(type)
void set2DAPDoAPD0Cut(const std::vector< double > &, const std::vector< double > &)
TAPD * APDFirstAnal[1700][nColor]
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
unsigned int firstChanMod[22]
std::string digiCollection_
unsigned int isFirstChanModFilled[22]
unsigned int _lastsamplePN
std::string eventHeaderProducer_
double * getAdcWithoutPedestal()
static int apdRefTower(int ilmmod)
unsigned int _firstsample
std::string eventHeaderCollection_
int iDCCId() const
get the DCCId
static int lmmod(EBGlobalCoord ieta, EBGlobalCoord iphi)
std::vector< double > getAPDoAPD1()
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::vector< double > getAPD()
std::map< unsigned int, unsigned int > channelMapEE
unsigned int iModule[1700]
const_iterator end() const
std::string alphainitfile
static int side(EBGlobalCoord ieta, EBGlobalCoord iphi)
T const * product() const
void setGeomEB(int etaG, int phiG, int module, int tower, int strip, int xtal, int apdRefTT, int channel, int lmr)
void analyze(const edm::Event &e, const edm::EventSetup &c) override
void setGeomEE(int etaG, int phiG, int iX, int iY, int iZ, int module, int tower, int ch, int apdRefTT, int channel, int lmr)
int IsThereDataADC[1700][nColor]
std::vector< double > getVals(int)
const_iterator end() const
unsigned int _timingqualhigh
std::vector< double > getPNoPN()
static int dee(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
unsigned int nevtAB[1700]
std::vector< double > getAPDoPN()
unsigned int _presamplePN
TTree * respntrees[nColor]
std::vector< double > getTime()
T const * product() const
static std::vector< int > apdRefChannels(ME::LMMid ilmmod, ME::LMRid ilmr)
static std::vector< ME::LMMid > lmmodFromDcc(ME::DCCid idcc)
static int lmr(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
int channelId() const
so far for EndCap only :
const_iterator begin() const
void setAPDoPNCut(double, double)
void setAPDoPN1Cut(double, double)