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 ;
491 int strip=elecid_crystal.
stripId();
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++){
844 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
845 for (
unsigned int icol=0;icol<nCol;icol++){
853 cut <<
"color=="<<
colors.at(icol);
858 unsigned int iMod=
iModule[iCry]-1;
866 Long64_t nbytes = 0, nb = 0;
867 for (Long64_t jentry=0; jentry<
ADCtrees[iCry]->GetEntriesFast();jentry++) {
868 nb =
ADCtrees[iCry]->GetEntry(jentry); nbytes += nb;
879 for(
unsigned int i=0;
i<nCol;
i++){
907 <<
" apdTime:"<<
apdTime<< endl;
910 if (pn0<10 && pn1>10) {
912 }
else if (pn1<10 && pn0>10){
914 }
else pnmean=0.5*(
pn0+
pn1);
916 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- pnMean:"<<pnmean << endl;
922 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
931 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- filling APDTree"<< endl;
945 for(
unsigned int ir=0;ir<
nRefChan;ir++){
947 if (
_debug>=1)
cout <<
"-- debug test -- ir:" << ir <<
" tt:"<<
towerID<<
" refmap:"<<
apdRefMap[ir][iMod+1]<<
" iCry:"<<iCry<<endl;
950 if (
_debug>=1)
cout <<
"-- debug test -- cut passed " <<endl;
955 if (
_debug>=1)
cout <<
"-- debug test -- color=" <<
color<<
", event:"<<
event<<
", ir:" << ir <<
" tt-1:"<<
towerID-1<< endl;
959 if (
_debug>=1)
cout <<
"-- debug test -- tree filled"<<
event<<endl;
970 if (
_debug==1)
cout <<
"-- debug test -- endJob -- after apdAmpl Loop"<< endl;
977 system(del.str().c_str());
985 for (
unsigned int iColor=0;iColor<nCol;iColor++){
987 stringstream nametree;
988 nametree <<
"APDCol"<<
colors.at(iColor);
989 stringstream nametree2;
990 nametree2 <<
"PNCol"<<
colors.at(iColor);
992 restrees[iColor]=
new TTree(nametree.str().c_str(),nametree.str().c_str());
993 respntrees[iColor]=
new TTree(nametree2.str().c_str(),nametree2.str().c_str());
995 restrees[iColor]->Branch(
"iphi", &iphi,
"iphi/I" );
996 restrees[iColor]->Branch(
"ieta", &ieta,
"ieta/I" );
1002 restrees[iColor]->Branch(
"APD", &
APD,
"APD[6]/D" );
1003 restrees[iColor]->Branch(
"Time", &
Time,
"Time[6]/D" );
1013 respntrees[iColor]->Branch(
"moduleID", &
moduleID,
"moduleID/I" );
1014 respntrees[iColor]->Branch(
"pnID", &
pnID,
"pnID/I" );
1015 respntrees[iColor]->Branch(
"PN", &
PN,
"PN[6]/D" );
1016 respntrees[iColor]->Branch(
"PNoPN", &
PNoPN,
"PNoPN[6]/D" );
1017 respntrees[iColor]->Branch(
"PNoPNA", &
PNoPNA,
"PNoPNA[6]/D" );
1018 respntrees[iColor]->Branch(
"PNoPNB", &
PNoPNB,
"PNoPNB[6]/D" );
1020 restrees[iColor]->SetBranchAddress(
"iphi", &iphi );
1021 restrees[iColor]->SetBranchAddress(
"ieta", &ieta );
1036 respntrees[iColor]->SetBranchAddress(
"moduleID", &
moduleID );
1037 respntrees[iColor]->SetBranchAddress(
"pnID", &
pnID );
1038 respntrees[iColor]->SetBranchAddress(
"PN",
PN );
1039 respntrees[iColor]->SetBranchAddress(
"PNoPN",
PNoPN );
1040 respntrees[iColor]->SetBranchAddress(
"PNoPNA",
PNoPNA );
1041 respntrees[iColor]->SetBranchAddress(
"PNoPNB",
PNoPNB );
1049 for (
unsigned int iM=0;iM<
nMod;iM++){
1050 unsigned int iMod=
modules[iM]-1;
1052 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
1053 for (
unsigned int icol=0;icol<nCol;icol++){
1062 for(
unsigned int imod=0;imod<
nMod;imod++){
1074 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
1076 unsigned int iMod=
iModule[iCry]-1;
1081 for(
unsigned int iCol=0;iCol<nCol;iCol++){
1083 std::vector<double> lowcut;
1084 std::vector<double> highcut;
1089 if(cutMin<0) cutMin=0;
1092 lowcut.push_back(cutMin);
1093 highcut.push_back(cutMax);
1097 lowcut.push_back(cutMin);
1098 highcut.push_back(cutMax);
1117 Long64_t nbytes = 0, nb = 0;
1118 for (Long64_t jentry=0; jentry<
APDtrees[iCry]->GetEntriesFast();jentry++) {
1119 nb =
APDtrees[iCry]->GetEntry(jentry); nbytes += nb;
1122 if (pn0<10 && pn1>10) {
1124 }
else if (pn1<10 && pn0>10){
1126 }
else pnmean=0.5*(
pn0+
pn1);
1131 unsigned int iCol=0;
1132 for(
unsigned int i=0;
i<nCol;
i++){
1143 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1151 if (
_debug>=1)
cout <<
"-- debug test -- LastLoop event:"<<
event<<
" apdAmpl:"<<
apdAmpl<< endl;
1155 for (
unsigned int iRef=0;iRef<
nRefChan;iRef++){
1174 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1177 std::vector<double> apdvec =
APDAnal[iCry][iColor]->
getAPD();
1186 for(
unsigned int i=0;
i<apdvec.size();
i++){
1188 APD[
i]=apdvec.at(
i);
1222 for (
unsigned int iM=0;iM<
nMod;iM++){
1223 unsigned int iMod=
modules[iM]-1;
1227 for (
unsigned int ch=0;ch<
nPNPerMod;ch++){
1234 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1236 std::vector<double> pnvec =
PNAnal[iMod][ch][iColor]->
getPN();
1237 std::vector<double> pnopnvec =
PNAnal[iMod][ch][iColor]->
getPNoPN();
1238 std::vector<double> pnopn0vec =
PNAnal[iMod][ch][iColor]->
getPNoPN0();
1239 std::vector<double> pnopn1vec =
PNAnal[iMod][ch][iColor]->
getPNoPN1();
1241 for(
unsigned int i=0;
i<pnvec.size();
i++){
1249 if (
_debug>=1)
cout <<
"-- debug test -- endJob -- filling pn results'tree: PN[0]:"<<
PN[0]<<
" iModule:" << iMod<<
" iColor:"<<iColor<<
" ch:"<< ch<< endl;
1267 system(del2.str().c_str());
1281 for (
unsigned int i=0;
i<nCol;
i++){
1288 cout <<
"\t+=+ .................................................. done +=+" << endl;
1289 cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
1304 int doesMatFileExist=0;
1305 int doesMatShapeExist=0;
1307 TProfile *laserShape=0;
1308 test2 = fopen(
matfile.c_str(),
"r");
1309 if (test2) doesMatFileExist=1;
1311 TFile *MatShapeFile;
1312 if (doesMatFileExist==1){
1313 MatShapeFile =
new TFile(
matfile.c_str());
1314 laserShape= (TProfile*) MatShapeFile->Get(
"shapeLaser");
1316 doesMatShapeExist=1;
1317 double y=laserShape->Integral(
"w");
1318 if(y!=0)laserShape->Scale(1.0/y);
1322 cout <<
" ERROR! Matacq shape file not found !"<< endl;
1325 if (doesMatShapeExist) IsMatacqOK=
true;
1330 int doesElecFileExist=0;
1333 if (test) doesElecFileExist=1;
1335 TFile *ElecShapesFile;
1338 if (doesElecFileExist==1){
1339 ElecShapesFile =
new TFile(
elecfile_.c_str());
1341 name <<
"MeanElecShape";
1342 elecShape=(TH1D*) ElecShapesFile->Get(name.str().c_str());
1343 if(elecShape && doesMatShapeExist==1){
1344 double x=elecShape->GetMaximum();
1345 if (x!=0) elecShape->Scale(1.0/x);
1353 cout <<
" ERROR! Elec shape file not found !"<< endl;
1362 unsigned int nBins=int(laserShape->GetEntries());
1364 double elec_jj, laser_iiMinusjj;
1369 unsigned int nBins2=int(elecShape->GetNbinsX());
1372 cout<<
"EcalLaserAnalyzer2::getShapes: wrong configuration of the shapes' number of bins"<< std::endl;
1378 name <<
"PulseShape";
1380 PulseShape=
new TProfile(name.str().c_str(),name.str().c_str(),nBins,-0.5,double(nBins)-0.5);
1384 for(
int ii=0;
ii<50;
ii++){
1389 for(
unsigned int ii=0;
ii<nBins-50;
ii++){
1392 elec_jj=elecShape->GetBinContent(
jj+1);
1393 laser_iiMinusjj=laserShape->GetBinContent(ii-
jj+1);
1394 sum_jj+=elec_jj*laser_iiMinusjj;
1405 for(
unsigned int ii=0;
ii<nBins;
ii++){
1419 system(del.str().c_str());
1439 for (
unsigned int iref=0;iref<
nRefChan;iref++){
1461 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){
1474 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 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()
void set2DAPDoAPD0Cut(const std::vector< double > &, const std::vector< double > &)
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
double shapes[NSAMPSHAPES]
std::string eventHeaderCollection_
int IsThereDataADC[NCRYSEB][nColor]
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_
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)