65 _nsamples( iConfig.getUntrackedParameter< unsigned
int >(
"nSamples", 10 ) ),
66 _presample( iConfig.getUntrackedParameter< unsigned
int >(
"nPresamples", 2 ) ),
67 _firstsample( iConfig.getUntrackedParameter< unsigned
int >(
"firstSample", 1 ) ),
68 _lastsample( iConfig.getUntrackedParameter< unsigned
int >(
"lastSample", 2 ) ),
69 _nsamplesPN( iConfig.getUntrackedParameter< unsigned
int >(
"nSamplesPN", 50 ) ),
70 _presamplePN( iConfig.getUntrackedParameter< unsigned
int >(
"nPresamplesPN", 6 ) ),
71 _firstsamplePN( iConfig.getUntrackedParameter< unsigned
int >(
"firstSamplePN", 7 ) ),
72 _lastsamplePN( iConfig.getUntrackedParameter< unsigned
int >(
"lastSamplePN", 8 ) ),
73 _timingcutlow( iConfig.getUntrackedParameter< unsigned
int >(
"timingCutLow", 2 ) ),
74 _timingcuthigh( iConfig.getUntrackedParameter< unsigned
int >(
"timingCutHigh", 9 ) ),
75 _timingquallow( iConfig.getUntrackedParameter< unsigned
int >(
"timingQualLow", 3 ) ),
76 _timingqualhigh( iConfig.getUntrackedParameter< unsigned
int >(
"timingQualHigh", 8 ) ),
77 _ratiomincutlow( iConfig.getUntrackedParameter< double >(
"ratioMinCutLow", 0.4 ) ),
78 _ratiomincuthigh( iConfig.getUntrackedParameter< double >(
"ratioMinCutHigh", 0.95 ) ),
79 _ratiomaxcutlow( iConfig.getUntrackedParameter< double >(
"ratioMaxCutLow", 0.8 ) ),
80 _presamplecut( iConfig.getUntrackedParameter< double >(
"presampleCut", 5.0 ) ),
81 _niter( iConfig.getUntrackedParameter< unsigned
int >(
"nIter", 5 ) ),
82 _noise( iConfig.getUntrackedParameter< double >(
"noise", 2.0 ) ),
83 _ecalPart( iConfig.getUntrackedParameter<
std::
string >(
"ecalPart",
"EB" ) ),
84 _saveshapes( iConfig.getUntrackedParameter<
bool >(
"saveShapes",
true ) ),
85 _docorpn( iConfig.getUntrackedParameter<
bool >(
"doCorPN",
false ) ),
86 _fedid( iConfig.getUntrackedParameter<
int >(
"fedID", -999 ) ),
87 _saveallevents( iConfig.getUntrackedParameter<
bool >(
"saveAllEvents",
false ) ),
88 _qualpercent( iConfig.getUntrackedParameter< double >(
"qualPercent", 0.2 ) ),
89 _debug( iConfig.getUntrackedParameter<
int >(
"debug", 0 ) ),
96 runType(-1), runNum(0),
towerID(-1), channelID(-1), fedID(-1), dccID(-1), side(2), lightside(2),
97 iZ(1), phi(-1),
eta(-1),
event(0),
color(0),pn0(0), pn1(0), apdAmpl(0),apdTime(0),pnAmpl(0),
98 pnID(-1), moduleID(-1),
flag(0), channelIteratorEE(0), ShapeCor(0)
133 for(
unsigned int j=0;j<
nCrys;j++){
145 for(
unsigned int j=0;j<
nMod;j++){
200 ADCfile+=
"/APDSamplesLaser.root";
203 APDfile+=
"/APDPNLaserAllEvents.root";
210 name <<
"ADCTree" <<
i+1;
211 ADCtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
242 stringstream namefile1;
243 namefile1 <<
resdir_ <<
"/SHAPE_LASER.root";
246 stringstream namefile2;
247 namefile2 << resdir_ <<
"/APDPN_LASER.root";
250 stringstream namefile3;
251 namefile3 << resdir_ <<
"/MATACQ.root";
260 cout <<
" ERROR! No matacq shape available: analysis aborted !"<< endl;
284 DCCHeader=pDCCHeader.
product();
310 cout <<
" Wrong ecalPart in cfg file " << endl;
331 TheMapping = ecalmapping.
product();
333 std::cerr <<
"Error! can't get the product EcalMappingRcd"<< std::endl;
346 int fed = headerItr->fedId();
349 runType=headerItr->getRunType();
350 runNum=headerItr->getRunNumber();
351 event=headerItr->getLV1();
353 dccID=headerItr->getDccInTCCCommand();
354 fedID=headerItr->fedId();
372 if(
color<0 )
return;
403 unsigned int samplemax=0;
406 map <int, vector<double> > allPNAmpl;
407 map <int, vector<double> > allPNGain;
416 if (
_debug==1)
cout <<
"-- debug test -- Inside PNDigi - pnID=" <<
417 pnDetId.
iPnId()<<
", dccID="<< pnDetId.
iDCCId()<< endl;
422 if(!isMemRelevant)
continue;
426 for (
int samId=0; samId < (*pnItr).size() ; samId++ ) {
427 pn[samId]=(*pnItr).sample(samId).adc();
428 pnG[samId]=(*pnItr).sample(samId).gainId();
429 if (samId==0) pnGain=
pnG[samId];
433 if(pnGain!=1)
cout <<
"PN gain different from 1"<< endl;
440 chi2pn = pnfit -> doFit(samplemax,&
pnNoPed[0]);
441 if(chi2pn == 101 || chi2pn == 102 || chi2pn == 103)
pnAmpl=0.;
442 else pnAmpl= pnfit -> getAmpl();
454 if (
_debug==1)
cout <<
"-- debug -- Inside PNDigi - PNampl=" <<
455 pnAmpl<<
", PNgain="<< pnGain<<endl;
478 EBDetId id_crystal(digiItr->id()) ;
482 int etaG = id_crystal.ieta() ;
483 int phiG = id_crystal.iphi() ;
487 int etaL=LocalCoord.first ;
488 int phiL=LocalCoord.second ;
491 int xtal=elecid_crystal.
xtalId();
494 int tower=elecid_crystal.
towerId();
499 unsigned int MyPn0=pnpair.first;
500 unsigned int MyPn1=pnpair.second;
504 assert( channel <
nCrys );
506 setGeomEB(etaG, phiG, module, tower, strip, xtal, apdRefTT, channel, lmr);
509 " channelID:" <<
channelID<<
" module:"<< module<<
510 " modules:"<<
modules.size()<< endl;
517 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
520 adc[
i]=samp_crystal.adc() ;
521 adcG[
i]=samp_crystal.gainId();
523 if (
i==0) adcGain=
adcG[
i];
543 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
545 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
566 digiItr != EEDigi->
end(); ++digiItr ) {
571 EEDetId id_crystal(digiItr->id()) ;
575 int etaG = id_crystal.iy() ;
576 int phiG = id_crystal.ix() ;
578 int iX = (phiG-1)/5+1;
579 int iY = (etaG-1)/5+1;
581 int tower=elecid_crystal.
towerId();
585 if( module>=18 &&
side==1 ) module+=2;
591 unsigned int MyPn0=pnpair.first;
592 unsigned int MyPn1=pnpair.second;
600 assert ( channel <
nCrys );
602 setGeomEE(etaG, phiG, iX, iY,
iZ, module, tower, ch, apdRefTT, channel, lmr);
606 " channelID:" <<
channelID<<
" module:"<< module<<
607 " modules:"<<
modules.size()<< endl;
612 if( (*digiItr).size()>10)
cout <<
"SAMPLES SIZE > 10!" << (*digiItr).size()<< endl;
616 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
619 adc[
i]=samp_crystal.adc() ;
620 adcG[
i]=samp_crystal.gainId();
623 if (
i==0) adcGain=
adcG[
i];
643 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
645 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
670 cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
671 cout <<
"\t+=+ WARNING! NO MATACQ +=+" << endl;
672 cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
704 system(del.str().c_str());
705 cout <<
" No Laser Events "<< endl;
712 double BadGainEvtPercentage=0.0;
713 double BadTimingEvtPercentage=0.0;
716 int nChanBadTiming=0;
733 double BadGainChanPercentage=double(nChanBadGain)/double(nCrys);
734 double BadTimingChanPercentage=double(nChanBadTiming)/double(nCrys);
742 cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
743 cout <<
"\t+=+ Analyzing laser data: getting APD, PN, APD/PN, PN/PN +=+" << endl;
746 cout <<
"\t+=+ ............................ WARNING! APD GAIN WAS NOT 1 +=+" << endl;
748 cout <<
"\t+=+ ............................ WARNING! TIMING WAS BAD +=+" << endl;
758 name <<
"APDTree" <<
i+1;
760 APDtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
767 APDtrees[
i]->Branch(
"iphi", &iphi,
"iphi/I" );
768 APDtrees[
i]->Branch(
"ieta", &ieta,
"ieta/I" );
776 APDtrees[
i]->Branch(
"flagfit", &flagfit,
"flagfit/I" );
782 APDtrees[
i]->SetBranchAddress(
"iphi", &iphi );
783 APDtrees[
i]->SetBranchAddress(
"ieta", &ieta );
791 APDtrees[
i]->SetBranchAddress(
"flagfit", &flagfit );
798 for (
unsigned int iref=0;iref<
nRefChan;iref++){
799 for (
unsigned int imod=0;imod<
nMod;imod++){
803 stringstream nameref;
804 nameref <<
"refAPDTree" <<imod<<
"_"<<iref;
806 RefAPDtrees[iref][jmod]=
new TTree(nameref.str().c_str(),nameref.str().c_str());
823 unsigned int nCol=
colors.size();
828 for (
unsigned int iM=0;iM<
nMod;iM++){
829 unsigned int iMod=
modules[iM]-1;
830 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
831 for (
unsigned int icol=0;icol<nCol;icol++){
843 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
844 for (
unsigned int icol=0;icol<nCol;icol++){
852 cut <<
"color=="<<
colors.at(icol);
857 unsigned int iMod=
iModule[iCry]-1;
865 Long64_t nbytes = 0, nb = 0;
866 for (Long64_t jentry=0; jentry<
ADCtrees[iCry]->GetEntriesFast();jentry++) {
867 nb =
ADCtrees[iCry]->GetEntry(jentry); nbytes += nb;
878 for(
unsigned int i=0;
i<nCol;
i++){
906 <<
" apdTime:"<<
apdTime<< endl;
909 if (pn0<10 && pn1>10) {
911 }
else if (pn1<10 && pn0>10){
913 }
else pnmean=0.5*(
pn0+
pn1);
915 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- pnMean:"<<pnmean << endl;
921 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
930 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- filling APDTree"<< endl;
944 for(
unsigned int ir=0;ir<
nRefChan;ir++){
946 if (
_debug>=1)
cout <<
"-- debug test -- ir:" << ir <<
" tt:"<<
towerID<<
" refmap:"<<
apdRefMap[ir][iMod+1]<<
" iCry:"<<iCry<<endl;
949 if (
_debug>=1)
cout <<
"-- debug test -- cut passed " <<endl;
954 if (
_debug>=1)
cout <<
"-- debug test -- color=" <<
color<<
", event:"<<
event<<
", ir:" << ir <<
" tt-1:"<<
towerID-1<< endl;
958 if (
_debug>=1)
cout <<
"-- debug test -- tree filled"<<
event<<endl;
969 if (
_debug==1)
cout <<
"-- debug test -- endJob -- after apdAmpl Loop"<< endl;
976 system(del.str().c_str());
984 for (
unsigned int iColor=0;iColor<nCol;iColor++){
986 stringstream nametree;
987 nametree <<
"APDCol"<<
colors.at(iColor);
988 stringstream nametree2;
989 nametree2 <<
"PNCol"<<
colors.at(iColor);
991 restrees[iColor]=
new TTree(nametree.str().c_str(),nametree.str().c_str());
992 respntrees[iColor]=
new TTree(nametree2.str().c_str(),nametree2.str().c_str());
994 restrees[iColor]->Branch(
"iphi", &iphi,
"iphi/I" );
995 restrees[iColor]->Branch(
"ieta", &ieta,
"ieta/I" );
1001 restrees[iColor]->Branch(
"APD", &
APD,
"APD[6]/D" );
1002 restrees[iColor]->Branch(
"Time", &
Time,
"Time[6]/D" );
1012 respntrees[iColor]->Branch(
"moduleID", &
moduleID,
"moduleID/I" );
1013 respntrees[iColor]->Branch(
"pnID", &
pnID,
"pnID/I" );
1014 respntrees[iColor]->Branch(
"PN", &
PN,
"PN[6]/D" );
1015 respntrees[iColor]->Branch(
"PNoPN", &
PNoPN,
"PNoPN[6]/D" );
1016 respntrees[iColor]->Branch(
"PNoPNA", &
PNoPNA,
"PNoPNA[6]/D" );
1017 respntrees[iColor]->Branch(
"PNoPNB", &
PNoPNB,
"PNoPNB[6]/D" );
1019 restrees[iColor]->SetBranchAddress(
"iphi", &iphi );
1020 restrees[iColor]->SetBranchAddress(
"ieta", &ieta );
1035 respntrees[iColor]->SetBranchAddress(
"moduleID", &
moduleID );
1036 respntrees[iColor]->SetBranchAddress(
"pnID", &
pnID );
1037 respntrees[iColor]->SetBranchAddress(
"PN",
PN );
1038 respntrees[iColor]->SetBranchAddress(
"PNoPN",
PNoPN );
1039 respntrees[iColor]->SetBranchAddress(
"PNoPNA",
PNoPNA );
1040 respntrees[iColor]->SetBranchAddress(
"PNoPNB",
PNoPNB );
1048 for (
unsigned int iM=0;iM<
nMod;iM++){
1049 unsigned int iMod=
modules[iM]-1;
1051 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
1052 for (
unsigned int icol=0;icol<nCol;icol++){
1061 for(
unsigned int imod=0;imod<
nMod;imod++){
1073 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
1075 unsigned int iMod=
iModule[iCry]-1;
1080 for(
unsigned int iCol=0;iCol<nCol;iCol++){
1082 std::vector<double> lowcut;
1083 std::vector<double> highcut;
1088 if(cutMin<0) cutMin=0;
1091 lowcut.push_back(cutMin);
1092 highcut.push_back(cutMax);
1096 lowcut.push_back(cutMin);
1097 highcut.push_back(cutMax);
1116 Long64_t nbytes = 0, nb = 0;
1117 for (Long64_t jentry=0; jentry<
APDtrees[iCry]->GetEntriesFast();jentry++) {
1118 nb =
APDtrees[iCry]->GetEntry(jentry); nbytes += nb;
1121 if (pn0<10 && pn1>10) {
1123 }
else if (pn1<10 && pn0>10){
1125 }
else pnmean=0.5*(
pn0+
pn1);
1130 unsigned int iCol=0;
1131 for(
unsigned int i=0;
i<nCol;
i++){
1142 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1150 if (
_debug>=1)
cout <<
"-- debug test -- LastLoop event:"<<
event<<
" apdAmpl:"<<
apdAmpl<< endl;
1154 for (
unsigned int iRef=0;iRef<
nRefChan;iRef++){
1173 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1176 std::vector<double> apdvec =
APDAnal[iCry][iColor]->
getAPD();
1185 for(
unsigned int i=0;
i<apdvec.size();
i++){
1187 APD[
i]=apdvec.at(
i);
1221 for (
unsigned int iM=0;iM<
nMod;iM++){
1222 unsigned int iMod=
modules[iM]-1;
1226 for (
unsigned int ch=0;ch<
nPNPerMod;ch++){
1233 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1235 std::vector<double> pnvec =
PNAnal[iMod][ch][iColor]->
getPN();
1236 std::vector<double> pnopnvec =
PNAnal[iMod][ch][iColor]->
getPNoPN();
1237 std::vector<double> pnopn0vec =
PNAnal[iMod][ch][iColor]->
getPNoPN0();
1238 std::vector<double> pnopn1vec =
PNAnal[iMod][ch][iColor]->
getPNoPN1();
1240 for(
unsigned int i=0;
i<pnvec.size();
i++){
1248 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- filling pn results'tree: PN[0]:"<<
PN[0]<<
" iModule:" << iMod<<
" iColor:"<<iColor<<
" ch:"<< ch<< endl;
1266 system(del2.str().c_str());
1280 for (
unsigned int i=0;
i<nCol;
i++){
1287 cout <<
"\t+=+ .................................................. done +=+" << endl;
1288 cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
1303 int doesMatFileExist=0;
1304 int doesMatShapeExist=0;
1306 TProfile *laserShape=
nullptr;
1307 test2 = fopen(
matfile.c_str(),
"r");
1308 if (test2) doesMatFileExist=1;
1310 TFile *MatShapeFile;
1311 if (doesMatFileExist==1){
1312 MatShapeFile =
new TFile(
matfile.c_str());
1313 laserShape= (TProfile*) MatShapeFile->Get(
"shapeLaser");
1315 doesMatShapeExist=1;
1316 double y=laserShape->Integral(
"w");
1317 if(y!=0)laserShape->Scale(1.0/y);
1321 cout <<
" ERROR! Matacq shape file not found !"<< endl;
1324 if (doesMatShapeExist) IsMatacqOK=
true;
1329 int doesElecFileExist=0;
1332 if (test) doesElecFileExist=1;
1334 TFile *ElecShapesFile;
1337 if (doesElecFileExist==1){
1338 ElecShapesFile =
new TFile(
elecfile_.c_str());
1340 name <<
"MeanElecShape";
1341 elecShape=(TH1D*) ElecShapesFile->Get(name.str().c_str());
1342 if(elecShape && doesMatShapeExist==1){
1343 double x=elecShape->GetMaximum();
1344 if (x!=0) elecShape->Scale(1.0/x);
1352 cout <<
" ERROR! Elec shape file not found !"<< endl;
1361 unsigned int nBins=
int(laserShape->GetEntries());
1363 double elec_jj, laser_iiMinusjj;
1368 unsigned int nBins2=
int(elecShape->GetNbinsX());
1371 cout<<
"EcalLaserAnalyzer2::getShapes: wrong configuration of the shapes' number of bins"<< std::endl;
1377 name <<
"PulseShape";
1379 PulseShape=
new TProfile(name.str().c_str(),name.str().c_str(),nBins,-0.5,double(nBins)-0.5);
1383 for(
int ii=0;
ii<50;
ii++){
1388 for(
unsigned int ii=0;
ii<nBins-50;
ii++){
1391 elec_jj=elecShape->GetBinContent(
jj+1);
1392 laser_iiMinusjj=laserShape->GetBinContent(ii-
jj+1);
1393 sum_jj+=elec_jj*laser_iiMinusjj;
1404 for(
unsigned int ii=0;
ii<nBins;
ii++){
1418 system(del.str().c_str());
1438 for (
unsigned int iref=0;iref<
nRefChan;iref++){
1460 void EcalLaserAnalyzer2::setGeomEE(
int etaG,
int phiG,
int iX,
int iY,
int iZ,
int module,
int tower,
int ch ,
int apdRefTT,
int channel,
int lmr){
1473 for (
unsigned int iref=0;iref<
nRefChan;iref++){
void addEntry(double val)
static XYCoord localCoord(int icr)
T getParameter(std::string const &) const
TPN * PNAnal[9][2][nColor]
T getUntrackedParameter(std::string const &, T const &) const
static int lmmod(SuperCrysCoord iX, SuperCrysCoord iY)
void analyze(const edm::Event &e, const edm::EventSetup &c) override
void setAPDCut(double, double)
std::map< int, int > channelMapEE
int xtalId() const
get the channel id
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
std::vector< double > getPN()
static int apdRefTower(int ilmr, int ilmmod)
void addEntry(double, double, double)
std::string digiProducer_
int stripId() const
get the tower id
double getDelta(int, int)
TAPD * APDAnal[1700][nColor]
std::vector< double > getPNoPN1()
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
TAPD * APDFirstAnal[1700][nColor]
static int side(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
TPN * PNFirstAnal[9][2][nColor]
void setPNCut(double, double)
void addEntry(double, double, double, double, double, double, double)
unsigned int _timingcuthigh
double getPNCorrectionFactor(double val0, int gain)
std::vector< T >::const_iterator const_iterator
int towerId() const
get the tower id
double * getAdcWithoutPedestal()
const_iterator begin() const
unsigned int isFirstChanModFilled[21]
void setGeomEE(int etaG, int phiG, int iX, int iY, int iZ, int module, int tower, int ch, int apdRefTT, int channel, int lmr)
static int lmr(EBGlobalCoord ieta, EBGlobalCoord iphi)
unsigned int _timingquallow
std::string digiPNCollection_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< double > getAPDoPN0()
void setTimeCut(double, double)
unsigned int _presamplePN
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()
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 > &)
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
std::string eventHeaderCollection_
double * getAdcWithoutPedestal()
EcalLaserAnalyzer2(const edm::ParameterSet &iConfig)
static int apdRefTower(int ilmmod)
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()
const_iterator end() const
unsigned int firstChanMod[21]
void setGeomEB(int etaG, int phiG, int module, int tower, int strip, int xtal, int apdRefTT, int channel, int lmr)
static int side(EBGlobalCoord ieta, EBGlobalCoord iphi)
T const * product() const
unsigned int nSamplesShapes
int IsThereDataADC[1700][nColor]
std::string digiCollection_
TTree * respntrees[nColor]
TTree * RefAPDtrees[2][21]
unsigned int _firstsamplePN
const_iterator end() const
std::vector< double > shapesVec
std::vector< double > getPNoPN()
static int dee(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
unsigned int _firstsample
unsigned int _timingcutlow
unsigned int iModule[1700]
~EcalLaserAnalyzer2() override
EcalLogicID towerID(EcalElectronicsId const &)
std::string eventHeaderProducer_
std::vector< double > getAPDoPN()
std::map< int, unsigned int > apdRefMap[2]
std::vector< double > getTime()
T const * product() const
unsigned int _timingqualhigh
static std::vector< int > apdRefChannels(ME::LMMid ilmmod, ME::LMRid ilmr)
unsigned int _lastsamplePN
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)