66 _nsamples( iConfig.getUntrackedParameter< unsigned int >(
"nSamples", 10 ) ),
67 _presample( iConfig.getUntrackedParameter< unsigned int >(
"nPresamples", 2 ) ),
68 _firstsample( iConfig.getUntrackedParameter< unsigned int >(
"firstSample", 1 ) ),
69 _lastsample( iConfig.getUntrackedParameter< unsigned int >(
"lastSample", 2 ) ),
70 _nsamplesPN( iConfig.getUntrackedParameter< unsigned int >(
"nSamplesPN", 50 ) ),
71 _presamplePN( iConfig.getUntrackedParameter< unsigned int >(
"nPresamplesPN", 6 ) ),
72 _firstsamplePN( iConfig.getUntrackedParameter< unsigned int >(
"firstSamplePN", 7 ) ),
73 _lastsamplePN( iConfig.getUntrackedParameter< unsigned int >(
"lastSamplePN", 8 ) ),
74 _timingcutlow( iConfig.getUntrackedParameter< unsigned int >(
"timingCutLow", 2 ) ),
75 _timingcuthigh( iConfig.getUntrackedParameter< unsigned int >(
"timingCutHigh", 9 ) ),
76 _timingquallow( iConfig.getUntrackedParameter< unsigned int >(
"timingQualLow", 3 ) ),
77 _timingqualhigh( iConfig.getUntrackedParameter< unsigned int >(
"timingQualHigh", 8 ) ),
78 _ratiomincutlow( iConfig.getUntrackedParameter< double >(
"ratioMinCutLow", 0.4 ) ),
79 _ratiomincuthigh( iConfig.getUntrackedParameter< double >(
"ratioMinCutHigh", 0.95 ) ),
80 _ratiomaxcutlow( iConfig.getUntrackedParameter< double >(
"ratioMaxCutLow", 0.8 ) ),
81 _presamplecut( iConfig.getUntrackedParameter< double >(
"presampleCut", 5.0 ) ),
82 _niter( iConfig.getUntrackedParameter< unsigned int >(
"nIter", 5 ) ),
83 _noise( iConfig.getUntrackedParameter< double >(
"noise", 2.0 ) ),
84 _ecalPart( iConfig.getUntrackedParameter< std::string >(
"ecalPart",
"EB" ) ),
85 _saveshapes( iConfig.getUntrackedParameter< bool >(
"saveShapes",
true ) ),
86 _docorpn( iConfig.getUntrackedParameter< bool >(
"doCorPN",
false ) ),
87 _fedid( iConfig.getUntrackedParameter< int >(
"fedID", -999 ) ),
88 _saveallevents( iConfig.getUntrackedParameter< bool >(
"saveAllEvents",
false ) ),
89 _qualpercent( iConfig.getUntrackedParameter< double >(
"qualPercent", 0.2 ) ),
90 _debug( iConfig.getUntrackedParameter< int >(
"debug", 0 ) ),
97 runType(-1), runNum(0),towerID(-1), channelID(-1), fedID(-1), dccID(-1), side(2), lightside(2),
98 iZ(1),
phi(-1),
eta(-1),
event(0), color(0),pn0(0), pn1(0), apdAmpl(0),apdTime(0),pnAmpl(0),
99 pnID(-1), moduleID(-1),
flag(0), channelIteratorEE(0), ShapeCor(0)
146 for(
unsigned int j=0;
j<
nMod;
j++){
201 ADCfile+=
"/APDSamplesLaser.root";
204 APDfile+=
"/APDPNLaserAllEvents.root";
211 name <<
"ADCTree" <<
i+1;
212 ADCtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
243 stringstream namefile1;
244 namefile1 <<
resdir_ <<
"/SHAPE_LASER.root";
247 stringstream namefile2;
248 namefile2 << resdir_ <<
"/APDPN_LASER.root";
251 stringstream namefile3;
252 namefile3 << resdir_ <<
"/MATACQ.root";
261 cout <<
" ERROR! No matacq shape available: analysis aborted !"<< endl;
285 DCCHeader=pDCCHeader.
product();
311 cout <<
" Wrong ecalPart in cfg file " << endl;
332 TheMapping = ecalmapping.
product();
334 std::cerr <<
"Error! can't get the product EcalMappingRcd"<< std::endl;
347 int fed = headerItr->fedId();
350 runType=headerItr->getRunType();
351 runNum=headerItr->getRunNumber();
352 event=headerItr->getLV1();
354 dccID=headerItr->getDccInTCCCommand();
355 fedID=headerItr->fedId();
373 if(
color<0 )
return;
404 unsigned int samplemax=0;
407 map <int, vector<double> > allPNAmpl;
408 map <int, vector<double> > allPNGain;
417 if (
_debug==1)
cout <<
"-- debug test -- Inside PNDigi - pnID=" <<
418 pnDetId.
iPnId()<<
", dccID="<< pnDetId.
iDCCId()<< endl;
423 if(!isMemRelevant)
continue;
427 for (
int samId=0; samId < (*pnItr).size() ; samId++ ) {
428 pn[samId]=(*pnItr).sample(samId).adc();
429 pnG[samId]=(*pnItr).sample(samId).gainId();
430 if (samId==0) pnGain=
pnG[samId];
434 if(pnGain!=1)
cout <<
"PN gain different from 1"<< endl;
441 chi2pn = pnfit -> doFit(samplemax,&
pnNoPed[0]);
442 if(chi2pn == 101 || chi2pn == 102 || chi2pn == 103)
pnAmpl=0.;
443 else pnAmpl= pnfit -> getAmpl();
455 if (
_debug==1)
cout <<
"-- debug -- Inside PNDigi - PNampl=" <<
456 pnAmpl<<
", PNgain="<< pnGain<<endl;
479 EBDetId id_crystal(digiItr->id()) ;
483 int etaG = id_crystal.ieta() ;
484 int phiG = id_crystal.iphi() ;
488 int etaL=LocalCoord.first ;
489 int phiL=LocalCoord.second ;
492 int xtal=elecid_crystal.
xtalId();
495 int tower=elecid_crystal.
towerId();
500 unsigned int MyPn0=pnpair.first;
501 unsigned int MyPn1=pnpair.second;
505 assert( channel <
nCrys );
507 setGeomEB(etaG, phiG, module, tower, strip, xtal, apdRefTT, channel, lmr);
510 " channelID:" <<
channelID<<
" module:"<< module<<
511 " modules:"<<
modules.size()<< endl;
518 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
521 adc[
i]=samp_crystal.adc() ;
522 adcG[
i]=samp_crystal.gainId();
524 if (
i==0) adcGain=
adcG[
i];
544 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
546 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
567 digiItr != EEDigi->
end(); ++digiItr ) {
572 EEDetId id_crystal(digiItr->id()) ;
576 int etaG = id_crystal.iy() ;
577 int phiG = id_crystal.ix() ;
579 int iX = (phiG-1)/5+1;
580 int iY = (etaG-1)/5+1;
582 int tower=elecid_crystal.
towerId();
586 if( module>=18 &&
side==1 ) module+=2;
592 unsigned int MyPn0=pnpair.first;
593 unsigned int MyPn1=pnpair.second;
601 assert ( channel <
nCrys );
603 setGeomEE(etaG, phiG, iX, iY,
iZ, module, tower, ch, apdRefTT, channel, lmr);
607 " channelID:" <<
channelID<<
" module:"<< module<<
608 " modules:"<<
modules.size()<< endl;
613 if( (*digiItr).size()>10)
cout <<
"SAMPLES SIZE > 10!" << (*digiItr).size()<< endl;
617 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
620 adc[
i]=samp_crystal.adc() ;
621 adcG[
i]=samp_crystal.gainId();
624 if (
i==0) adcGain=
adcG[
i];
644 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
646 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
671 cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
672 cout <<
"\t+=+ WARNING! NO MATACQ +=+" << endl;
673 cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
705 system(del.str().c_str());
706 cout <<
" No Laser Events "<< endl;
713 double BadGainEvtPercentage=0.0;
714 double BadTimingEvtPercentage=0.0;
717 int nChanBadTiming=0;
734 double BadGainChanPercentage=double(nChanBadGain)/double(nCrys);
735 double BadTimingChanPercentage=double(nChanBadTiming)/double(nCrys);
743 cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
744 cout <<
"\t+=+ Analyzing laser data: getting APD, PN, APD/PN, PN/PN +=+" << endl;
747 cout <<
"\t+=+ ............................ WARNING! APD GAIN WAS NOT 1 +=+" << endl;
749 cout <<
"\t+=+ ............................ WARNING! TIMING WAS BAD +=+" << endl;
759 name <<
"APDTree" <<
i+1;
761 APDtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
768 APDtrees[
i]->Branch(
"iphi", &iphi,
"iphi/I" );
769 APDtrees[
i]->Branch(
"ieta", &ieta,
"ieta/I" );
777 APDtrees[
i]->Branch(
"flagfit", &flagfit,
"flagfit/I" );
783 APDtrees[
i]->SetBranchAddress(
"iphi", &iphi );
784 APDtrees[
i]->SetBranchAddress(
"ieta", &ieta );
792 APDtrees[
i]->SetBranchAddress(
"flagfit", &flagfit );
799 for (
unsigned int iref=0;iref<
nRefChan;iref++){
800 for (
unsigned int imod=0;imod<
nMod;imod++){
804 stringstream nameref;
805 nameref <<
"refAPDTree" <<imod<<
"_"<<iref;
807 RefAPDtrees[iref][jmod]=
new TTree(nameref.str().c_str(),nameref.str().c_str());
824 unsigned int nCol=
colors.size();
829 for (
unsigned int iM=0;iM<
nMod;iM++){
830 unsigned int iMod=
modules[iM]-1;
831 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
832 for (
unsigned int icol=0;icol<nCol;icol++){
845 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
846 for (
unsigned int icol=0;icol<nCol;icol++){
854 cut <<
"color=="<<
colors.at(icol);
859 unsigned int iMod=
iModule[iCry]-1;
867 Long64_t nbytes = 0, nb = 0;
868 for (Long64_t jentry=0; jentry<
ADCtrees[iCry]->GetEntriesFast();jentry++) {
869 nb =
ADCtrees[iCry]->GetEntry(jentry); nbytes += nb;
880 for(
unsigned int i=0;
i<nCol;
i++){
895 chi2 = psfit -> doFit(&
adcNoPed[0]);
909 <<
" apdTime:"<<
apdTime<< endl;
912 if (pn0<10 && pn1>10) {
914 }
else if (pn1<10 && pn0>10){
916 }
else pnmean=0.5*(
pn0+
pn1);
918 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- pnMean:"<<pnmean << endl;
924 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
933 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- filling APDTree"<< endl;
947 for(
unsigned int ir=0;ir<
nRefChan;ir++){
949 if (
_debug>=1)
cout <<
"-- debug test -- ir:" << ir <<
" tt:"<<
towerID<<
" refmap:"<<
apdRefMap[ir][iMod+1]<<
" iCry:"<<iCry<<endl;
952 if (
_debug>=1)
cout <<
"-- debug test -- cut passed " <<endl;
957 if (
_debug>=1)
cout <<
"-- debug test -- color=" <<
color<<
", event:"<<
event<<
", ir:" << ir <<
" tt-1:"<<
towerID-1<< endl;
961 if (
_debug>=1)
cout <<
"-- debug test -- tree filled"<<
event<<endl;
972 if (
_debug==1)
cout <<
"-- debug test -- endJob -- after apdAmpl Loop"<< endl;
979 system(del.str().c_str());
987 for (
unsigned int iColor=0;iColor<nCol;iColor++){
989 stringstream nametree;
990 nametree <<
"APDCol"<<
colors.at(iColor);
991 stringstream nametree2;
992 nametree2 <<
"PNCol"<<
colors.at(iColor);
994 restrees[iColor]=
new TTree(nametree.str().c_str(),nametree.str().c_str());
995 respntrees[iColor]=
new TTree(nametree2.str().c_str(),nametree2.str().c_str());
997 restrees[iColor]->Branch(
"iphi", &iphi,
"iphi/I" );
998 restrees[iColor]->Branch(
"ieta", &ieta,
"ieta/I" );
1004 restrees[iColor]->Branch(
"APD", &
APD,
"APD[6]/D" );
1005 restrees[iColor]->Branch(
"Time", &
Time,
"Time[6]/D" );
1015 respntrees[iColor]->Branch(
"moduleID", &
moduleID,
"moduleID/I" );
1016 respntrees[iColor]->Branch(
"pnID", &
pnID,
"pnID/I" );
1017 respntrees[iColor]->Branch(
"PN", &
PN,
"PN[6]/D" );
1018 respntrees[iColor]->Branch(
"PNoPN", &
PNoPN,
"PNoPN[6]/D" );
1019 respntrees[iColor]->Branch(
"PNoPNA", &
PNoPNA,
"PNoPNA[6]/D" );
1020 respntrees[iColor]->Branch(
"PNoPNB", &
PNoPNB,
"PNoPNB[6]/D" );
1022 restrees[iColor]->SetBranchAddress(
"iphi", &iphi );
1023 restrees[iColor]->SetBranchAddress(
"ieta", &ieta );
1038 respntrees[iColor]->SetBranchAddress(
"moduleID", &
moduleID );
1039 respntrees[iColor]->SetBranchAddress(
"pnID", &
pnID );
1040 respntrees[iColor]->SetBranchAddress(
"PN",
PN );
1041 respntrees[iColor]->SetBranchAddress(
"PNoPN",
PNoPN );
1042 respntrees[iColor]->SetBranchAddress(
"PNoPNA",
PNoPNA );
1043 respntrees[iColor]->SetBranchAddress(
"PNoPNB",
PNoPNB );
1051 for (
unsigned int iM=0;iM<
nMod;iM++){
1052 unsigned int iMod=
modules[iM]-1;
1054 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
1055 for (
unsigned int icol=0;icol<nCol;icol++){
1064 for(
unsigned int imod=0;imod<
nMod;imod++){
1076 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
1078 unsigned int iMod=
iModule[iCry]-1;
1083 for(
unsigned int iCol=0;iCol<nCol;iCol++){
1085 std::vector<double> lowcut;
1086 std::vector<double> highcut;
1091 if(cutMin<0) cutMin=0;
1094 lowcut.push_back(cutMin);
1095 highcut.push_back(cutMax);
1099 lowcut.push_back(cutMin);
1100 highcut.push_back(cutMax);
1119 Long64_t nbytes = 0, nb = 0;
1120 for (Long64_t jentry=0; jentry<
APDtrees[iCry]->GetEntriesFast();jentry++) {
1121 nb =
APDtrees[iCry]->GetEntry(jentry); nbytes += nb;
1124 if (pn0<10 && pn1>10) {
1126 }
else if (pn1<10 && pn0>10){
1128 }
else pnmean=0.5*(
pn0+
pn1);
1133 unsigned int iCol=0;
1134 for(
unsigned int i=0;
i<nCol;
i++){
1145 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1153 if (
_debug>=1)
cout <<
"-- debug test -- LastLoop event:"<<
event<<
" apdAmpl:"<<
apdAmpl<< endl;
1157 for (
unsigned int iRef=0;iRef<
nRefChan;iRef++){
1176 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1179 std::vector<double> apdvec =
APDAnal[iCry][iColor]->
getAPD();
1188 for(
unsigned int i=0;
i<apdvec.size();
i++){
1190 APD[
i]=apdvec.at(
i);
1224 for (
unsigned int iM=0;iM<
nMod;iM++){
1225 unsigned int iMod=
modules[iM]-1;
1229 for (
unsigned int ch=0;ch<
nPNPerMod;ch++){
1236 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1238 std::vector<double> pnvec =
PNAnal[iMod][ch][iColor]->
getPN();
1239 std::vector<double> pnopnvec =
PNAnal[iMod][ch][iColor]->
getPNoPN();
1240 std::vector<double> pnopn0vec =
PNAnal[iMod][ch][iColor]->
getPNoPN0();
1241 std::vector<double> pnopn1vec =
PNAnal[iMod][ch][iColor]->
getPNoPN1();
1243 for(
unsigned int i=0;
i<pnvec.size();
i++){
1251 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- filling pn results'tree: PN[0]:"<<
PN[0]<<
" iModule:" << iMod<<
" iColor:"<<iColor<<
" ch:"<< ch<< endl;
1269 system(del2.str().c_str());
1283 for (
unsigned int i=0;
i<nCol;
i++){
1290 cout <<
"\t+=+ .................................................. done +=+" << endl;
1291 cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
1306 int doesMatFileExist=0;
1307 int doesMatShapeExist=0;
1309 TProfile *laserShape=0;
1310 test2 = fopen(
matfile.c_str(),
"r");
1311 if (test2) doesMatFileExist=1;
1313 TFile *MatShapeFile;
1314 if (doesMatFileExist==1){
1315 MatShapeFile =
new TFile(
matfile.c_str());
1316 laserShape= (TProfile*) MatShapeFile->Get(
"shapeLaser");
1318 doesMatShapeExist=1;
1319 double y=laserShape->Integral(
"w");
1320 if(y!=0)laserShape->Scale(1.0/y);
1324 cout <<
" ERROR! Matacq shape file not found !"<< endl;
1327 if (doesMatShapeExist) IsMatacqOK=
true;
1332 int doesElecFileExist=0;
1335 if (test) doesElecFileExist=1;
1337 TFile *ElecShapesFile;
1340 if (doesElecFileExist==1){
1341 ElecShapesFile =
new TFile(
elecfile_.c_str());
1343 name <<
"MeanElecShape";
1344 elecShape=(TH1D*) ElecShapesFile->Get(name.str().c_str());
1345 if(elecShape && doesMatShapeExist==1){
1346 double x=elecShape->GetMaximum();
1347 if (x!=0) elecShape->Scale(1.0/x);
1355 cout <<
" ERROR! Elec shape file not found !"<< endl;
1364 unsigned int nBins=int(laserShape->GetEntries());
1366 double elec_jj, laser_iiMinusjj;
1371 unsigned int nBins2=int(elecShape->GetNbinsX());
1374 cout<<
"EcalLaserAnalyzer2::getShapes: wrong configuration of the shapes' number of bins"<< std::endl;
1380 name <<
"PulseShape";
1382 PulseShape=
new TProfile(name.str().c_str(),name.str().c_str(),nBins,-0.5,double(nBins)-0.5);
1386 for(
int ii=0;ii<50;ii++){
1391 for(
unsigned int ii=0;ii<nBins-50;ii++){
1393 for(
unsigned int jj=0;jj<ii;jj++){
1394 elec_jj=elecShape->GetBinContent(jj+1);
1395 laser_iiMinusjj=laserShape->GetBinContent(ii-jj+1);
1396 sum_jj+=elec_jj*laser_iiMinusjj;
1407 for(
unsigned int ii=0;ii<nBins;ii++){
1421 system(del.str().c_str());
1441 for (
unsigned int iref=0;iref<
nRefChan;iref++){
1463 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){
1476 for (
unsigned int iref=0;iref<
nRefChan;iref++){
void addEntry(double val)
static XYCoord localCoord(int icr)
T getParameter(std::string const &) const
TTree * RefAPDtrees[NREFCHAN][NMODEE]
T getUntrackedParameter(std::string const &, T const &) const
static int lmmod(SuperCrysCoord iX, SuperCrysCoord iY)
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
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)
#define DEFINE_FWK_MODULE(type)
std::vector< double > getPNoPN1()
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
TAPD * APDAnal[NCRYSEB][nColor]
static int side(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
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
TTree * ADCtrees[NCRYSEB]
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)
TPN * PNAnal[NMODEB][NPNPERMOD][nColor]
unsigned int _presamplePN
static std::pair< int, int > pn(int ilmmod)
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()
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
double shapes[NSAMPSHAPES]
std::string eventHeaderCollection_
int IsThereDataADC[NCRYSEB][nColor]
void set2DAPDoAPD0Cut(std::vector< double >, std::vector< double >)
double * getAdcWithoutPedestal()
EcalLaserAnalyzer2(const edm::ParameterSet &iConfig)
static int apdRefTower(int ilmmod)
std::vector< int > modules
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
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
bool wasTimingOK[NCRYSEB]
std::vector< double > getAPD()
const_iterator end() const
TTree * APDtrees[NCRYSEB]
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)
unsigned int firstChanMod[NMODEE]
TAPD * APDFirstAnal[NCRYSEB][nColor]
unsigned int nSamplesShapes
unsigned int iModule[NCRYSEB]
std::string digiCollection_
T const * product() const
unsigned int isFirstChanModFilled[NMODEE]
TTree * respntrees[nColor]
T const * product() const
unsigned int _firstsamplePN
const_iterator end() const
std::vector< double > shapesVec
std::vector< double > getPNoPN()
std::vector< int > colors
static int dee(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
unsigned int _firstsample
unsigned int _timingcutlow
std::string eventHeaderProducer_
void set2DAPDoAPD1Cut(std::vector< double >, std::vector< double >)
std::vector< double > getAPDoPN()
TPN * PNFirstAnal[NMODEB][NPNPERMOD][nColor]
std::map< int, unsigned int > apdRefMap[2]
std::vector< double > getTime()
int nEvtBadTiming[NCRYSEB]
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)
tuple size
Write out results.
int channelId() const
so far for EndCap only :
const_iterator begin() const
void setAPDoPNCut(double, double)
void setAPDoPN1Cut(double, double)