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 ;
525 int strip=elecid_crystal.
stripId();
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();
982 ", apdTime="<<
apdTime<< std::endl;
984 if (pn0<10 && pn1>10) {
986 }
else if (pn1<10 && pn0>10){
988 }
else pnmean=0.5*(
pn0+
pn1);
996 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1018 for(
unsigned int ir=0;ir<
nRefChan;ir++){
1037 std::stringstream del;
1039 system(del.str().c_str());
1047 for (
unsigned int iColor=0;iColor<nCol;iColor++){
1049 std::stringstream nametree;
1050 nametree <<
"APDCol"<<
colors[iColor];
1051 std::stringstream nametree2;
1052 nametree2 <<
"PNCol"<<colors[iColor];
1054 restrees[iColor]=
new TTree(nametree.str().c_str(),nametree.str().c_str());
1055 respntrees[iColor]=
new TTree(nametree2.str().c_str(),nametree2.str().c_str());
1057 restrees[iColor]->Branch(
"iphi", &iphi,
"iphi/I" );
1058 restrees[iColor]->Branch(
"ieta", &ieta,
"ieta/I" );
1062 restrees[iColor]->Branch(
"towerID", &towerID,
"towerID/I" );
1063 restrees[iColor]->Branch(
"channelID", &channelID,
"channelID/I" );
1064 restrees[iColor]->Branch(
"APD", &
APD,
"APD[6]/D" );
1065 restrees[iColor]->Branch(
"Time", &
Time,
"Time[6]/D" );
1071 restrees[iColor]->Branch(
"flag", &flag,
"flag/I" );
1073 respntrees[iColor]->Branch(
"side", &
side,
"side/I" );
1074 respntrees[iColor]->Branch(
"moduleID", &
moduleID,
"moduleID/I" );
1075 respntrees[iColor]->Branch(
"pnID", &
pnID,
"pnID/I" );
1076 respntrees[iColor]->Branch(
"PN", &
PN,
"PN[6]/D" );
1077 respntrees[iColor]->Branch(
"PNoPN", &
PNoPN,
"PNoPN[6]/D" );
1078 respntrees[iColor]->Branch(
"PNoPNA", &
PNoPNA,
"PNoPNA[6]/D" );
1079 respntrees[iColor]->Branch(
"PNoPNB", &
PNoPNB,
"PNoPNB[6]/D" );
1081 restrees[iColor]->SetBranchAddress(
"iphi", &iphi );
1082 restrees[iColor]->SetBranchAddress(
"ieta", &ieta );
1086 restrees[iColor]->SetBranchAddress(
"towerID", &towerID );
1087 restrees[iColor]->SetBranchAddress(
"channelID", &channelID );
1095 restrees[iColor]->SetBranchAddress(
"flag", &flag );
1097 respntrees[iColor]->SetBranchAddress(
"side", &
side );
1098 respntrees[iColor]->SetBranchAddress(
"moduleID", &
moduleID );
1099 respntrees[iColor]->SetBranchAddress(
"pnID", &
pnID );
1100 respntrees[iColor]->SetBranchAddress(
"PN",
PN );
1101 respntrees[iColor]->SetBranchAddress(
"PNoPN",
PNoPN );
1102 respntrees[iColor]->SetBranchAddress(
"PNoPNA",
PNoPNA );
1103 respntrees[iColor]->SetBranchAddress(
"PNoPNB",
PNoPNB );
1110 for (
unsigned int iM=0;iM<
nMod;iM++){
1111 unsigned int iMod=
modules[iM]-1;
1113 for (
unsigned int ich=0;ich<
nPNPerMod;ich++){
1114 for (
unsigned int icol=0;icol<nCol;icol++){
1123 for(
unsigned int imod=0;imod<
nMod;imod++){
1135 for (
unsigned int iCry=0;iCry<
nCrys;iCry++){
1137 unsigned int iMod=
iModule[iCry]-1;
1142 for(
unsigned int iCol=0;iCol<nCol;iCol++){
1144 std::vector<double> lowcut;
1145 std::vector<double> highcut;
1150 if(cutMin<0) cutMin=0;
1153 lowcut.push_back(cutMin);
1154 highcut.push_back(cutMax);
1158 lowcut.push_back(cutMin);
1159 highcut.push_back(cutMax);
1175 Long64_t nbytes = 0, nb = 0;
1176 for (Long64_t jentry=0; jentry<
APDtrees[iCry]->GetEntriesFast();jentry++) {
1177 nb =
APDtrees[iCry]->GetEntry(jentry); nbytes += nb;
1180 if (pn0<10 && pn1>10) {
1182 }
else if (pn1<10 && pn0>10){
1184 }
else pnmean=0.5*(
pn0+
pn1);
1189 unsigned int iCol=0;
1190 for(
unsigned int i=0;
i<nCol;
i++){
1201 for (
unsigned int ichan=0;ichan<
nPNPerMod;ichan++){
1209 if (
_debug==1)
std::cout <<
"-- debug test -- Last Loop event:"<<
event<<
" apdAmpl:"<<
apdAmpl<< std::endl;
1213 for (
unsigned int iRef=0;iRef<
nRefChan;iRef++){
1234 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1236 std::vector<double> apdvec =
APDAnal[iCry][iColor]->
getAPD();
1245 for(
unsigned int i=0;
i<apdvec.size();
i++){
1247 APD[
i]=apdvec.at(
i);
1279 for (
unsigned int iM=0;iM<
nMod;iM++){
1280 unsigned int iMod=
modules[iM]-1;
1284 for (
unsigned int ch=0;ch<
nPNPerMod;ch++){
1291 for(
unsigned int iColor=0;iColor<nCol;iColor++){
1293 std::vector<double> pnvec =
PNAnal[iMod][ch][iColor]->
getPN();
1294 std::vector<double> pnopnvec =
PNAnal[iMod][ch][iColor]->
getPNoPN();
1295 std::vector<double> pnopn0vec =
PNAnal[iMod][ch][iColor]->
getPNoPN0();
1296 std::vector<double> pnopn1vec =
PNAnal[iMod][ch][iColor]->
getPNoPN1();
1298 for(
unsigned int i=0;
i<pnvec.size();
i++){
1319 std::stringstream del2;
1321 system(del2.str().c_str());
1335 for (
unsigned int i=0;
i<nCol;
i++){
1342 std::cout <<
"\t+=+ .................................................. done +=+" << std::endl;
1343 std::cout <<
"\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << std::endl;
1359 for (
unsigned int iref=0;iref<
nRefChan;iref++){
1382 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){
1395 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)
void set2DAPDoAPD1Cut(const std::vector< double > &, const std::vector< double > &)
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()
void set2DAPDoAPD0Cut(const std::vector< double > &, const std::vector< double > &)
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
TTree * ADCtrees[NCRYSEB]
std::string digiCollection_
unsigned int _lastsamplePN
bool wasTimingOK[NCRYSEB]
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]
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]