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", 3 ) ),
82 _fitab( iConfig.getUntrackedParameter< bool >(
"fitAB",
false ) ),
83 _alpha( iConfig.getUntrackedParameter< double >(
"alpha", 1.5076494 ) ),
84 _beta( iConfig.getUntrackedParameter< double >(
"beta", 1.5136036 ) ),
85 _nevtmax( iConfig.getUntrackedParameter< unsigned int >(
"nEvtMax", 200 ) ),
86 _noise( iConfig.getUntrackedParameter< double >(
"noise", 2.0 ) ),
87 _chi2cut( iConfig.getUntrackedParameter< double >(
"chi2cut", 10.0 ) ),
88 _ecalPart( iConfig.getUntrackedParameter< std::string >(
"ecalPart",
"EB" ) ),
89 _docorpn( iConfig.getUntrackedParameter< bool >(
"doCorPN",
false ) ),
90 _fedid( iConfig.getUntrackedParameter< int >(
"fedID", -999 ) ),
91 _saveallevents( iConfig.getUntrackedParameter< bool >(
"saveAllEvents",
false ) ),
92 _qualpercent( iConfig.getUntrackedParameter< double >(
"qualPercent", 0.2 ) ),
93 _debug( iConfig.getUntrackedParameter< int >(
"debug", 0 ) ),
98 runType(-1), runNum(0), fedID(-1), dccID(-1), side(2), lightside(2), iZ(1),
99 phi(-1),
eta(-1),
event(0), color(-1),pn0(0), pn1(0), apdAmpl(0), apdAmplA(0),
100 apdAmplB(0),apdTime(0),pnAmpl(0),
101 pnID(-1), moduleID(-1), channelIteratorEE(0)
148 for(
unsigned int j=0;
j<
nMod;
j++){
204 ADCfile+=
"/APDSamplesLaser.root";
207 APDfile+=
"/APDPNLaserAllEvents.root";
213 std::stringstream
name;
214 name <<
"ADCTree" <<
i+1;
215 ADCtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
253 std::stringstream nameabinitfile;
254 nameabinitfile <<
resdir_ <<
"/ABInit.root";
257 std::stringstream nameabfile;
258 nameabfile << resdir_ <<
"/AB.root";
272 TFile *fAB=0; TTree *ABInit=0;
274 fAB=
new TFile(nameabinitfile.str().c_str());
277 ABInit = (TTree*) fAB->Get(
"ABCol0");
298 std::stringstream nameapdfile;
299 nameapdfile << resdir_ <<
"/APDPN_LASER.root";
321 DCCHeader=pDCCHeader.
product();
323 std::cerr <<
"Error! can't get the product retrieving DCC header" <<
340 std::cerr <<
"Error! can't get the product retrieving EB crystal data " <<
348 std::cerr <<
"Error! can't get the product retrieving EE crystal data " <<
352 std::cout <<
" Wrong ecalPart in cfg file " << std::endl;
373 TheMapping = ecalmapping.
product();
375 std::cerr <<
"Error! can't get the product EcalMappingRcd"<< std::endl;
384 headerItr != DCCHeader->
end(); ++headerItr ) {
388 int fed = headerItr->fedId();
391 runType=headerItr->getRunType();
392 runNum=headerItr->getRunNumber();
393 event=headerItr->getLV1();
395 dccID=headerItr->getDccInTCCCommand();
396 fedID=headerItr->fedId();
414 if(
color<0 )
return;
440 unsigned int samplemax=0;
443 std::map <int, std::vector<double> > allPNAmpl;
444 std::map <int, std::vector<double> > allPNGain;
450 pnItr != PNDigi->
end(); ++pnItr ) {
455 pnDetId.
iPnId()<<
", dccID="<< pnDetId.
iDCCId()<< std::endl;
460 if(!isMemRelevant)
continue;
464 for (
int samId=0; samId < (*pnItr).size() ; samId++ ) {
465 pn[samId]=(*pnItr).sample(samId).adc();
466 pnG[samId]=(*pnItr).sample(samId).gainId();
467 if (samId==0) pnGain=
pnG[samId];
471 if( pnGain!=1 )
std::cout <<
"PN gain different from 1"<< std::endl;
478 chi2pn = pnfit -> doFit(samplemax,&
pnNoPed[0]);
479 if(chi2pn == 101 || chi2pn == 102 || chi2pn == 103)
pnAmpl=0.;
480 else pnAmpl= pnfit -> getAmpl();
493 pnAmpl<<
", PNgain="<< pnGain<<std::endl;
508 digiItr != EBDigi->
end(); ++digiItr ) {
513 EBDetId id_crystal(digiItr->id()) ;
517 int etaG = id_crystal.ieta() ;
518 int phiG = id_crystal.iphi() ;
522 int etaL=LocalCoord.first ;
523 int phiL=LocalCoord.second ;
526 int xtal=elecid_crystal.
xtalId();
529 int tower=elecid_crystal.
towerId();
534 unsigned int MyPn0=pnpair.first;
535 unsigned int MyPn1=pnpair.second;
539 assert( channel <
nCrys );
541 setGeomEB(etaG, phiG, module, tower, strip, xtal, apdRefTT, channel, lmr);
544 " channelID:" <<
channelID<<
" module:"<< module<<
545 " modules:"<<
modules.size()<< std::endl;
552 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
555 adc[
i]=samp_crystal.adc() ;
556 adcG[
i]=samp_crystal.gainId();
558 if (
i==0) adcGain=
adcG[
i];
577 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
579 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
607 digiItr != EEDigi->
end(); ++digiItr ) {
612 EEDetId id_crystal(digiItr->id()) ;
616 int etaG = id_crystal.iy() ;
617 int phiG = id_crystal.ix() ;
619 int iX = (phiG-1)/5+1;
620 int iY = (etaG-1)/5+1;
622 int tower=elecid_crystal.
towerId();
626 if( module>=18 &&
side==1 ) module+=2;
632 unsigned int MyPn0=pnpair.first;
633 unsigned int MyPn1=pnpair.second;
641 assert ( channel <
nCrys );
643 setGeomEE(etaG, phiG, iX, iY,
iZ, module, tower, ch, apdRefTT, channel, lmr);
647 " channelID:" <<
channelID<<
" module:"<< module<<
648 " modules:"<<
modules.size()<< std::endl;
653 if( (*digiItr).size()>10)
std::cout <<
"SAMPLES SIZE > 10!" << (*digiItr).size()<< std::endl;
657 for (
unsigned int i=0;
i< (*digiItr).size() ; ++
i ) {
660 adc[
i]=samp_crystal.adc() ;
661 adcG[
i]=samp_crystal.gainId();
664 if (
i==0) adcGain=
adcG[
i];
684 if(allPNAmpl[mem0].
size()>MyPn0)
pn0=allPNAmpl[mem0][MyPn0];
686 if(allPNAmpl[mem1].
size()>MyPn1)
pn1=allPNAmpl[mem1][MyPn1];
739 std::cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
740 std::cout <<
"\t+=+ Analyzing data: getting (alpha, beta) +=+" << std::endl;
741 TFile *fAB=0; TTree *ABInit=0;
746 ABInit = (TTree*) fAB->Get(
"ABCol0");
749 std::cout <<
"\t+=+ .................................... done +=+" << std::endl;
750 std::cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
760 std::stringstream del;
762 system(del.str().c_str());
763 std::cout <<
" No Laser Events "<< std::endl;
770 double BadGainEvtPercentage=0.0;
771 double BadTimingEvtPercentage=0.0;
774 int nChanBadTiming=0;
791 double BadGainChanPercentage=double(nChanBadGain)/double(nCrys);
792 double BadTimingChanPercentage=double(nChanBadTiming)/double(nCrys);
800 std::cout <<
"\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
801 std::cout <<
"\t+=+ Analyzing laser data: getting APD, PN, APD/PN, PN/PN +=+" << std::endl;
804 std::cout <<
"\t+=+ ............................ WARNING! APD GAIN WAS NOT 1 +=+" << std::endl;
806 std::cout <<
"\t+=+ ............................ WARNING! TIMING WAS BAD +=+" << std::endl;
815 std::stringstream
name;
816 name <<
"APDTree" <<
i+1;
818 APDtrees[
i]=
new TTree(name.str().c_str(),name.str().c_str());
824 APDtrees[
i]->Branch(
"iphi", &iphi,
"iphi/I" );
825 APDtrees[
i]->Branch(
"ieta", &ieta,
"ieta/I" );
828 APDtrees[
i]->Branch(
"towerID", &towerID,
"towerID/I" );
829 APDtrees[
i]->Branch(
"channelID", &channelID,
"channelID/I" );
833 APDtrees[
i]->Branch(
"flag", &flag,
"flag/I" );
840 APDtrees[
i]->SetBranchAddress(
"iphi", &iphi );
841 APDtrees[
i]->SetBranchAddress(
"ieta", &ieta );
844 APDtrees[
i]->SetBranchAddress(
"towerID", &towerID );
845 APDtrees[
i]->SetBranchAddress(
"channelID", &channelID );
849 APDtrees[
i]->SetBranchAddress(
"flag", &flag );
857 for (
unsigned int iref=0;iref<
nRefChan;iref++){
858 for (
unsigned int imod=0;imod<
nMod;imod++){
862 std::stringstream nameref;
863 nameref <<
"refAPDTree" <<imod<<
"_"<<iref;
865 RefAPDtrees[iref][jmod]=
new TTree(nameref.str().c_str(),nameref.str().c_str());
881 unsigned int nCol=
colors.size();
886 for (
unsigned int iM=0;iM<
nMod;iM++){
887 unsigned int iMod=
modules[iM]-1;
889 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
890 for (
unsigned int icol=0;icol<nCol;icol++){
906 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
907 for (
unsigned int icol=0;icol<nCol;icol++){
914 std::stringstream
cut;
915 cut <<
"color=="<<
colors[icol];
920 unsigned int iMod=
iModule[iCry]-1;
926 Long64_t nbytes = 0, nb = 0;
927 for (Long64_t jentry=0; jentry<
ADCtrees[iCry]->GetEntriesFast();jentry++){
928 nb =
ADCtrees[iCry]->GetEntry(jentry); nbytes += nb;
933 for(
unsigned int i=0;
i<nCol;
i++){
964 chi2 = pslsfit -> doFit(&
adcNoPed[0]);
966 if( chi2 < 0. || chi2 == 102 || chi2 == 101 ) {
971 apdAmpl = pslsfit -> getAmpl();
983 ", apdTime="<<
apdTime<< std::endl;
985 if (pn0<10 && pn1>10) {
987 }
else if (pn1<10 && pn0>10){
989 }
else pnmean=0.5*(
pn0+
pn1);
997 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1019 for(
unsigned int ir=0;ir<
nRefChan;ir++){
1038 std::stringstream del;
1040 system(del.str().c_str());
1048 for (
unsigned int iColor=0;iColor<nCol;iColor++){
1050 std::stringstream nametree;
1051 nametree <<
"APDCol"<<
colors[iColor];
1052 std::stringstream nametree2;
1053 nametree2 <<
"PNCol"<<colors[iColor];
1055 restrees[iColor]=
new TTree(nametree.str().c_str(),nametree.str().c_str());
1056 respntrees[iColor]=
new TTree(nametree2.str().c_str(),nametree2.str().c_str());
1058 restrees[iColor]->Branch(
"iphi", &iphi,
"iphi/I" );
1059 restrees[iColor]->Branch(
"ieta", &ieta,
"ieta/I" );
1063 restrees[iColor]->Branch(
"towerID", &towerID,
"towerID/I" );
1064 restrees[iColor]->Branch(
"channelID", &channelID,
"channelID/I" );
1065 restrees[iColor]->Branch(
"APD", &
APD,
"APD[6]/D" );
1066 restrees[iColor]->Branch(
"Time", &
Time,
"Time[6]/D" );
1072 restrees[iColor]->Branch(
"flag", &flag,
"flag/I" );
1074 respntrees[iColor]->Branch(
"side", &
side,
"side/I" );
1075 respntrees[iColor]->Branch(
"moduleID", &
moduleID,
"moduleID/I" );
1076 respntrees[iColor]->Branch(
"pnID", &
pnID,
"pnID/I" );
1077 respntrees[iColor]->Branch(
"PN", &
PN,
"PN[6]/D" );
1078 respntrees[iColor]->Branch(
"PNoPN", &
PNoPN,
"PNoPN[6]/D" );
1079 respntrees[iColor]->Branch(
"PNoPNA", &
PNoPNA,
"PNoPNA[6]/D" );
1080 respntrees[iColor]->Branch(
"PNoPNB", &
PNoPNB,
"PNoPNB[6]/D" );
1082 restrees[iColor]->SetBranchAddress(
"iphi", &iphi );
1083 restrees[iColor]->SetBranchAddress(
"ieta", &ieta );
1087 restrees[iColor]->SetBranchAddress(
"towerID", &towerID );
1088 restrees[iColor]->SetBranchAddress(
"channelID", &channelID );
1096 restrees[iColor]->SetBranchAddress(
"flag", &flag );
1098 respntrees[iColor]->SetBranchAddress(
"side", &
side );
1099 respntrees[iColor]->SetBranchAddress(
"moduleID", &
moduleID );
1100 respntrees[iColor]->SetBranchAddress(
"pnID", &
pnID );
1101 respntrees[iColor]->SetBranchAddress(
"PN",
PN );
1102 respntrees[iColor]->SetBranchAddress(
"PNoPN",
PNoPN );
1103 respntrees[iColor]->SetBranchAddress(
"PNoPNA",
PNoPNA );
1104 respntrees[iColor]->SetBranchAddress(
"PNoPNB",
PNoPNB );
1111 for (
unsigned int iM=0;iM<
nMod;iM++){
1112 unsigned int iMod=
modules[iM]-1;
1114 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
1115 for (
unsigned int icol=0;icol<nCol;icol++){
1124 for(
unsigned int imod=0;imod<
nMod;imod++){
1136 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
1138 unsigned int iMod=
iModule[iCry]-1;
1143 for(
unsigned int iCol=0;iCol<nCol;iCol++){
1145 std::vector<double> lowcut;
1146 std::vector<double> highcut;
1151 if(cutMin<0) cutMin=0;
1154 lowcut.push_back(cutMin);
1155 highcut.push_back(cutMax);
1159 lowcut.push_back(cutMin);
1160 highcut.push_back(cutMax);
1176 Long64_t nbytes = 0, nb = 0;
1177 for (Long64_t jentry=0; jentry<
APDtrees[iCry]->GetEntriesFast();jentry++) {
1178 nb =
APDtrees[iCry]->GetEntry(jentry); nbytes += nb;
1181 if (pn0<10 && pn1>10) {
1183 }
else if (pn1<10 && pn0>10){
1185 }
else pnmean=0.5*(
pn0+
pn1);
1190 unsigned int iCol=0;
1191 for(
unsigned int i=0;
i<nCol;
i++){
1202 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1210 if (
_debug==1)
std::cout <<
"-- debug test -- Last Loop event:"<<
event<<
" apdAmpl:"<<
apdAmpl<< std::endl;
1214 for (
unsigned int iRef=0;iRef<
nRefChan;iRef++){
1235 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1237 std::vector<double> apdvec =
APDAnal[iCry][iColor]->
getAPD();
1246 for(
unsigned int i=0;
i<apdvec.size();
i++){
1248 APD[
i]=apdvec.at(
i);
1280 for (
unsigned int iM=0;iM<
nMod;iM++){
1281 unsigned int iMod=
modules[iM]-1;
1285 for (
unsigned int ch=0;ch<
nPNPerMod;ch++){
1292 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1294 std::vector<double> pnvec =
PNAnal[iMod][ch][iColor]->
getPN();
1295 std::vector<double> pnopnvec =
PNAnal[iMod][ch][iColor]->
getPNoPN();
1296 std::vector<double> pnopn0vec =
PNAnal[iMod][ch][iColor]->
getPNoPN0();
1297 std::vector<double> pnopn1vec =
PNAnal[iMod][ch][iColor]->
getPNoPN1();
1299 for(
unsigned int i=0;
i<pnvec.size();
i++){
1320 std::stringstream del2;
1322 system(del2.str().c_str());
1336 for (
unsigned int i=0;
i<nCol;
i++){
1343 std::cout <<
"\t+=+ .................................................. done +=+" << std::endl;
1344 std::cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
1360 for (
unsigned int iref=0;iref<
nRefChan;iref++){
1383 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){
1396 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)
int IsThereDataADC[NCRYSEB][nColor]
int nEvtBadTiming[NCRYSEB]
void setAPDCut(double, double)
int xtalId() const
get the channel id
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
std::vector< double > getPN()
std::vector< int > modules
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)
#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 [...
TTree * RefAPDtrees[NREFCHAN][NMODEE]
TAPD * APDFirstAnal[NCRYSEB][nColor]
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
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)
static std::pair< int, int > pn(int ilmmod)
unsigned int isFirstChanModFilled[NMODEE]
void setAPDoPN0Cut(double, double)
std::vector< double > getPNoPN0()
std::vector< double > getAPDoPN1()
std::string digiProducer_
int iPnId() const
get the PnId
std::vector< int > colors
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)
TTree * ADCtrees[NCRYSEB]
std::string digiCollection_
unsigned int _lastsamplePN
bool wasTimingOK[NCRYSEB]
void set2DAPDoAPD0Cut(std::vector< double >, std::vector< double >)
std::string eventHeaderProducer_
double * getAdcWithoutPedestal()
static int apdRefTower(int ilmmod)
TPN * PNFirstAnal[NMODEE][NPNPERMOD][nColor]
unsigned int _firstsample
std::string eventHeaderCollection_
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
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
TAPD * APDAnal[NCRYSEB][nColor]
std::vector< double > getAPD()
std::map< unsigned int, unsigned int > channelMapEE
const_iterator end() const
std::string alphainitfile
static int side(EBGlobalCoord ieta, EBGlobalCoord iphi)
void setGeomEB(int etaG, int phiG, int module, int tower, int strip, int xtal, int apdRefTT, int channel, int lmr)
T const * product() const
T const * product() const
void setGeomEE(int etaG, int phiG, int iX, int iY, int iZ, int module, int tower, int ch, int apdRefTT, int channel, int lmr)
std::vector< double > getVals(int)
const_iterator end() const
unsigned int _timingqualhigh
unsigned int iModule[NCRYSEB]
TTree * APDtrees[NCRYSEB]
std::vector< double > getPNoPN()
static int dee(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
unsigned int firstChanMod[NMODEE]
void set2DAPDoAPD1Cut(std::vector< double >, std::vector< double >)
std::vector< double > getAPDoPN()
unsigned int nevtAB[NCRYSEB]
unsigned int _presamplePN
TTree * respntrees[nColor]
std::vector< double > getTime()
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)
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)
TPN * PNAnal[NMODEE][NPNPERMOD][nColor]