CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
EcalPerEvtLaserAnalyzer Class Reference

#include <EcalPerEvtLaserAnalyzer.h>

Inheritance diagram for EcalPerEvtLaserAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Types

enum  VarCol { iBlue, iRed, nColor }
 
- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void beginJob () override
 
 EcalPerEvtLaserAnalyzer (const edm::ParameterSet &iConfig)
 
void endJob () override
 
 ~EcalPerEvtLaserAnalyzer () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

unsigned int _channel
 
std::string _ecalPart
 
int _fedid
 
unsigned int _firstsample
 
unsigned int _firstsamplePN
 
unsigned int _lastsample
 
unsigned int _lastsamplePN
 
unsigned int _niter
 
unsigned int _nsamples
 
unsigned int _nsamplesPN
 
unsigned int _presample
 
unsigned int _presamplePN
 
unsigned int _samplemax
 
unsigned int _samplemin
 
unsigned int _timingcuthigh
 
unsigned int _timingcutlow
 
unsigned int _tower
 
double adc [10]
 
std::string ADCfile
 
TFile * ADCFile
 
int adcG [10]
 
TTree * ADCtrees
 
std::string alphafile
 
double apdAmpl
 
std::string APDfile
 
TFile * APDFile
 
double apdTime
 
TTree * APDtrees
 
int channelNumber
 
int colMat
 
int color
 
std::vector< int > colors
 
int dccID
 
std::string digiCollection_
 
std::string digiPNCollection_
 
std::string digiProducer_
 
int doesRefFileExist
 
int eta
 
int event
 
std::string eventHeaderCollection_
 
std::string eventHeaderProducer_
 
int evtMat
 
int fedID
 
TTree * header [2]
 
int iEvent
 
int IsFileCreated
 
int IsHeaderFilled [nColor]
 
int IsThereDataADC [nColor]
 
int lightside
 
TFile * matacqFile
 
TTree * matacqTree
 
unsigned int nCh
 
unsigned int nCrys
 
unsigned int nSides
 
unsigned int nTT
 
double peak
 
double peakMat
 
int phi
 
double pn [50]
 
double pn0
 
double pn1
 
double pnAmpl
 
std::string refalphabeta_
 
std::string resdir_
 
std::string resfile
 
int runNum
 
int runType
 
double tt
 
double ttMat
 
double ttrig
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 35 of file EcalPerEvtLaserAnalyzer.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

EcalPerEvtLaserAnalyzer::EcalPerEvtLaserAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 47 of file EcalPerEvtLaserAnalyzer.cc.

References _ecalPart, digiCollection_, digiPNCollection_, digiProducer_, eventHeaderCollection_, eventHeaderProducer_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), nCrys, NCRYSEB, NCRYSEE, nTT, NTTEB, NTTEE, refalphabeta_, resdir_, and AlCaHLTBitMon_QueryRunRegistry::string.

49  :
50 iEvent(0),
51 
52 // framework parameters with default values
53 _nsamples( iConfig.getUntrackedParameter< unsigned int >( "nSamples", 10 ) ),
54 _presample( iConfig.getUntrackedParameter< unsigned int >( "nPresamples", 3 ) ),
55 _firstsample( iConfig.getUntrackedParameter< unsigned int >( "firstSample", 1 ) ),
56 _lastsample( iConfig.getUntrackedParameter< unsigned int >( "lastSample", 2 ) ),
57 _samplemin( iConfig.getUntrackedParameter< unsigned int >( "sampleMin", 3 ) ),
58 _samplemax( iConfig.getUntrackedParameter< unsigned int >( "sampleMax", 9 ) ),
59 _nsamplesPN( iConfig.getUntrackedParameter< unsigned int >( "nSamplesPN", 50 ) ),
60 _presamplePN( iConfig.getUntrackedParameter< unsigned int >( "nPresamplesPN", 6 ) ),
61 _firstsamplePN( iConfig.getUntrackedParameter< unsigned int >( "firstSamplePN", 7 ) ),
62 _lastsamplePN( iConfig.getUntrackedParameter< unsigned int >( "lastSamplePN", 8 ) ),
63 _timingcutlow( iConfig.getUntrackedParameter< unsigned int >( "timingCutLow", 3 ) ),
64 _timingcuthigh( iConfig.getUntrackedParameter< unsigned int >( "timingCutHigh", 7 ) ),
65 _niter( iConfig.getUntrackedParameter< unsigned int >( "nIter", 3 ) ),
66 _fedid( iConfig.getUntrackedParameter< unsigned int >( "fedID", 0 ) ),
67 _tower( iConfig.getUntrackedParameter< unsigned int >( "tower", 1 ) ),
68 _channel( iConfig.getUntrackedParameter< unsigned int >( "channel", 1 ) ),
69 _ecalPart( iConfig.getUntrackedParameter< std::string >( "ecalPart", "EB" ) ),
70 nCrys( NCRYSEB),
71 nTT( NTTEB),
72 nSides( NSIDES),
73 IsFileCreated(0), nCh(0),
74 runType(-1), runNum(0), dccID(-1), lightside(2), doesRefFileExist(0),
75 ttMat(-1), peakMat(-1), peak(-1), evtMat(-1), colMat(-1)
76  //========================================================================
77 
78 {
79 
80  //now do what ever initialization is needed
81 
82  resdir_ = iConfig.getUntrackedParameter<std::string>("resDir");
83  refalphabeta_ = iConfig.getUntrackedParameter<std::string>("refAlphaBeta");
84 
85  digiCollection_ = iConfig.getParameter<std::string>("digiCollection");
86  digiPNCollection_ = iConfig.getParameter<std::string>("digiPNCollection");
87  digiProducer_ = iConfig.getParameter<std::string>("digiProducer");
88 
89  eventHeaderCollection_ = iConfig.getParameter<std::string>("eventHeaderCollection");
90  eventHeaderProducer_ = iConfig.getParameter<std::string>("eventHeaderProducer");
91 
92  // Define geometrical constants
93 
94  if (_ecalPart == "EB") {
95  nCrys = NCRYSEB;
96  nTT = NTTEB;
97  } else {
98  nCrys = NCRYSEE;
99  nTT = NTTEE;
100  }
101 
102 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
#define NTTEB
#define NSIDES
#define NTTEE
#define NCRYSEE
#define NCRYSEB
EcalPerEvtLaserAnalyzer::~EcalPerEvtLaserAnalyzer ( )
override

Definition at line 105 of file EcalPerEvtLaserAnalyzer.cc.

105  {
106  //========================================================================
107 
108 
109  // do anything here that needs to be done at desctruction time
110  // (e.g. close files, deallocate resources etc.)
111 
112 }

Member Function Documentation

void EcalPerEvtLaserAnalyzer::analyze ( const edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 167 of file EcalPerEvtLaserAnalyzer.cc.

References _channel, _ecalPart, _fedid, _firstsamplePN, _lastsamplePN, _nsamples, _nsamplesPN, _presample, _presamplePN, _timingcuthigh, _timingcutlow, _tower, adc, adcG, ADCtrees, edm::SortedCollection< T, SORT >::begin(), edm::DataFrameContainer::begin(), MessageLogger_cfi::cerr, EcalElectronicsId::channelId(), channelNumber, colMat, color, gather_cfg::cout, MEEEGeom::crystal(), dccID, digiCollection_, digiPNCollection_, digiProducer_, doesRefFileExist, MEEBGeom::electronic_channel(), edm::SortedCollection< T, SORT >::end(), edm::DataFrameContainer::end(), eta, eventHeaderCollection_, eventHeaderProducer_, evtMat, cppFunctionSkipper::exception, fedID, spr::find(), edm::EventSetup::get(), edm::Event::getByLabel(), EcalElectronicsMapping::getElectronicsId(), mps_fire::i, iEvent, init, IsFileCreated, gen::k, EcalDCCHeaderBlock::LASER_GAP, EcalDCCHeaderBlock::LASER_STD, lightside, MEEEGeom::lmmod(), MEEBGeom::lmmod(), MEEBGeom::localCoord(), matacqFile, matacqTree, Max(), nCrys, peak, peakMat, phi, MEEBGeom::pn(), MEEEGeom::pn(), pn, pn0, pn1, pnAmpl, edm::Handle< T >::product(), edm::ESHandle< T >::product(), resdir_, resfile, runNum, runType, MEEBGeom::side(), digitizers_cfi::strip, EcalElectronicsId::stripId(), PFTauMVAInputDiscriminatorTranslator_cfi::test, ecaldqm::towerID(), EcalElectronicsId::towerId(), ttMat, ttrig, EcalDCCHeaderBlock::EcalDCCEventSettings::wavelength, and EcalElectronicsId::xtalId().

167  {
168  //========================================================================
169 
170  ++iEvent;
171 
172  // retrieving DCC header
174  const EcalRawDataCollection* DCCHeader=nullptr;
175  try {
177  DCCHeader=pDCCHeader.product();
178  }catch ( std::exception& ex ) {
179  std::cerr << "Error! can't get the product retrieving DCC header" << eventHeaderCollection_.c_str() << std::endl;
180  }
181 
182  // retrieving crystal data from Event
184  const EBDigiCollection* EBDigi=nullptr;
186  const EEDigiCollection* EEDigi=nullptr;
187 
188  if (_ecalPart == "EB") {
189  try {
191  EBDigi=pEBDigi.product();
192  }catch ( std::exception& ex ) {
193  std::cerr << "Error! can't get the product retrieving EB crystal data " << digiCollection_.c_str() << std::endl;
194  }
195  } else {
196  try {
198  EEDigi=pEEDigi.product();
199  }catch ( std::exception& ex ) {
200  std::cerr << "Error! can't get the product retrieving EE crystal data " << digiCollection_.c_str() << std::endl;
201  }
202  }
203 
204 
205  // retrieving crystal PN diodes from Event
207  const EcalPnDiodeDigiCollection* PNDigi=nullptr;
208  try {
210  PNDigi=pPNDigi.product();
211  }catch ( std::exception& ex ) {
212  std::cerr << "Error! can't get the product " << digiPNCollection_.c_str() << std::endl;
213  }
214 
215  // retrieving electronics mapping
217  const EcalElectronicsMapping* TheMapping=nullptr;
218  try{
219  c.get< EcalMappingRcd >().get(ecalmapping);
220  TheMapping = ecalmapping.product();
221  }catch ( std::exception& ex ) {
222  std::cerr << "Error! can't get the product EcalMappingRcd"<< std::endl;
223  }
224 
225  // ====================================
226  // Decode Basic DCCHeader Information
227  // ====================================
228 
229  for ( EcalRawDataCollection::const_iterator headerItr= DCCHeader->begin();headerItr != DCCHeader->end();
230  ++headerItr ) {
231 
232  // Get run type and run number
233 
234  int fed = headerItr->fedId();
235 
236  if(fed!=_fedid && _fedid!=-999) continue;
237 
238  runType=headerItr->getRunType();
239  runNum=headerItr->getRunNumber();
240  event=headerItr->getLV1();
241  dccID=headerItr->getDccInTCCCommand();
242  fedID=headerItr->fedId();
243 
244  // take event only if the fed corresponds to the DCC in TCC
245  if( 600+dccID != fedID ) continue;
246 
247  // Cut on runType
249 
250  // Define output results files' names
251 
252  if (IsFileCreated==0){
253 
254  stringstream namefile2;
255  namefile2 << resdir_ <<"/APDAmpl_Run"<<runNum<<"_"<<_fedid <<"_"<<_tower<<"_"<<_channel<<".root";
256  resfile=namefile2.str();
257 
258  // Get Matacq ttrig
259 
260  stringstream namefile;
261  namefile << resdir_ <<"/Matacq-Run"<<runNum<<".root";
262 
264 
265  FILE *test;
266  test = fopen(namefile.str().c_str(),"r");
267  if (test) doesRefFileExist=1;
268 
269  if(doesRefFileExist==1){
270  matacqFile = new TFile((namefile.str().c_str()));
271  matacqTree=(TTree*)matacqFile->Get("MatacqShape");
272 
273  matacqTree->SetBranchAddress( "event", &evtMat );
274  matacqTree->SetBranchAddress( "color", &colMat );
275  matacqTree->SetBranchAddress( "peak", &peakMat );
276  matacqTree->SetBranchAddress( "ttrig", &ttMat );
277  }
278 
279  IsFileCreated=1;
280 
281  }
282 
283  // Retrieve laser color and event number
284 
285  EcalDCCHeaderBlock::EcalDCCEventSettings settings = headerItr->getEventSettings();
286  int color = settings.wavelength;
287 
288  vector<int>::iterator iter = find( colors.begin(), colors.end(), color );
289  if( iter==colors.end() ){
290  colors.push_back( color );
291  cout <<" new color found "<< color<<" "<< colors.size()<< endl;
292  }
293 
294  }
295 
296  // cut on fedID
297 
298  if(fedID!=_fedid && _fedid!=-999) return;
299 
300 
301  // ======================
302  // Decode PN Information
303  // ======================
304 
305  TPNFit * pnfit = new TPNFit();
307 
308  double chi2pn=0;
309  double ypnrange[50];
310  double dsum=0.;
311  double dsum1=0.;
312  double bl=0.;
313  double bl1=0.;
314  double val_max=0.;
315  unsigned int samplemax=0;
316  unsigned int k;
317 
318  std::vector<double> allPNAmpl;
319 
320  for ( EcalPnDiodeDigiCollection::const_iterator pnItr = PNDigi->begin(); pnItr != PNDigi->end(); ++pnItr ) { // Loop on PNs
321 
322 
323  for ( int samId=0; samId < (*pnItr).size() ; samId++ ) { // Loop on PN samples
324  pn[samId]=(*pnItr).sample(samId).adc();
325  }
326 
327 
328  for(dsum=0.,k=0;k<_presamplePN;k++) {
329  dsum+=pn[k];
330  }
331  bl=dsum/((double) _presamplePN);
332 
333  for(val_max=0.,k=0;k<_nsamplesPN;k++) {
334  ypnrange[k]=pn[k] - bl;
335 
336  if(ypnrange[k] > val_max) {
337  val_max= ypnrange[k]; samplemax=k;
338  }
339  }
340 
341  chi2pn = pnfit -> doFit(samplemax,&ypnrange[0]);
342 
343  if(chi2pn == 101 || chi2pn == 102 || chi2pn == 103) pnAmpl=0.;
344  else pnAmpl= pnfit -> getAmpl();
345 
346  allPNAmpl.push_back(pnAmpl);
347 
348  }
349 
350  // ===========
351  // Get Matacq
352  // ===========
353 
354  ttrig=-1.;
355  peak=-1.;
356 
357  if(doesRefFileExist==1){
358  // FIXME
359  if (color==0) matacqTree->GetEntry(event-1);
360  else if(color==3) matacqTree->GetEntry(matacqTree->GetEntries("color==0")+event-1);
361  ttrig=ttMat;
362  peak=peakMat;
363 
364  }
365 
366 
367  // ===========================
368  // Decode EBDigis Information
369  // ===========================
370 
371  double yrange[10];
372  int adcGain=0;
373  int side=0;
374 
375  if (EBDigi){
376 
377  for ( EBDigiCollection::const_iterator digiItr= EBDigi->begin(); digiItr != EBDigi->end(); ++digiItr ) { // Loop on crystals
378 
379  EBDetId id_crystal(digiItr->id()) ;
380  EBDataFrame df( *digiItr );
381 
382  int etaG = id_crystal.ieta() ; // global
383  int phiG = id_crystal.iphi() ; // global
384 
385  int etaL ; // local
386  int phiL ; // local
387  std::pair<int, int> LocalCoord=MEEBGeom::localCoord( etaG , phiG );
388 
389  etaL=LocalCoord.first ;
390  phiL=LocalCoord.second ;
391 
392  eta = etaG;
393  phi = phiG;
394 
395  side=MEEBGeom::side(etaG,phiG);
396 
397  EcalElectronicsId elecid_crystal = TheMapping->getElectronicsId(id_crystal);
398 
399  int towerID=elecid_crystal.towerId();
400  // int channelID=elecid_crystal.channelId()-1; // FIXME so far for endcap only
401  int strip=elecid_crystal.stripId();
402  int xtal=elecid_crystal.xtalId();
403  int channelID= 5*(strip-1) + xtal-1; // FIXME
404 
405  int module= MEEBGeom::lmmod(etaG, phiG);
406 
407  std::pair<int,int> pnpair=MEEBGeom::pn(module);
408  unsigned int MyPn0=pnpair.first;
409  unsigned int MyPn1=pnpair.second;
410 
411  unsigned int channel=MEEBGeom::electronic_channel( etaL, phiL );
412  assert(channel < nCrys);
413 
414  double adcmax=0.0;
415 
416  if(towerID!=int(_tower) || channelID!=int(_channel) || dccID!=int(_fedid-600)) continue;
417  else channelNumber=channel;
418 
419  for (unsigned int i=0; i< (*digiItr).size() ; ++i ) { // Loop on adc samples
420 
421  EcalMGPASample samp_crystal(df.sample(i));
422  adc[i]=samp_crystal.adc() ;
423  adcG[i]=samp_crystal.gainId();
424 
425  if (i==0) adcGain=adcG[i];
426  if (i>0) adcGain=TMath::Max(adcG[i],adcGain);
427 
428  if (adc[i]>adcmax) {
429  adcmax=adc[i];
430  }
431  }
432 
433  for(dsum=0.,dsum1=0.,k=0;k<_presample;k++) {
434  dsum+=adc[k];
435  if(k<_presample-1) dsum1+=adc[k];
436  }
437 
438  bl=dsum/((double)_presample);
439  bl1=dsum1/((double)_presample-1);
440 
441  for(val_max=0.,k=0;k<_nsamples;k++) {
442  yrange[k]=adc[k] - bl;
443  if(yrange[k] > val_max) {
444  val_max= yrange[k]; samplemax=k;
445  }
446  }
447 
448  if(samplemax==4 || samplemax==5) {
449  val_max=val_max+bl-bl1;
450  for(k=0;k<_nsamples;k++) {
451  yrange[k]=yrange[k]+bl-bl1;
452  }
453  }
454 
455  for(unsigned int k=0;k<_nsamples;k++) {
456  adc[k]=yrange[k];
457  }
458 
459  pn0=allPNAmpl[MyPn0];
460  pn1=allPNAmpl[MyPn1];
461 
462  if(samplemax>=_timingcutlow && samplemax<=_timingcuthigh && lightside==side) ADCtrees->Fill();
463 
464  }
465 
466  } else {
467 
468  for ( EEDigiCollection::const_iterator digiItr= EEDigi->begin(); digiItr != EEDigi->end(); ++digiItr ) { // Loop on crystals
469 
470  EEDetId id_crystal(digiItr->id()) ;
471  EEDataFrame df( *digiItr );
472 
473  phi = id_crystal.ix()-1 ;
474  eta = id_crystal.iy()-1 ;
475  side=0; // FIXME
476 
477  // Recover the TT id and the electronic crystal numbering from EcalElectronicsMapping
478 
479  EcalElectronicsId elecid_crystal = TheMapping->getElectronicsId(id_crystal);
480 
481  int towerID=elecid_crystal.towerId();
482  int channelID=elecid_crystal.channelId()-1;
483 
484  int module=MEEEGeom::lmmod( phi, eta );
485 
486  std::pair<int,int> pnpair=MEEEGeom::pn( module, _fedid ) ;
487  unsigned int MyPn0=pnpair.first;
488  unsigned int MyPn1=pnpair.second;
489 
490  unsigned int channel=MEEEGeom::crystal( phi, eta );
491  assert(channel < nCrys);
492 
493  double adcmax=0.0;
494 
495  if(towerID!=int(_tower) || channelID!=int(_channel) || dccID!=int(_fedid-600)) continue;
496  else channelNumber=channel;
497 
498  for (unsigned int i=0; i< (*digiItr).size() ; ++i ) { // Loop on adc samples
499 
500  EcalMGPASample samp_crystal(df.sample(i));
501  adc[i]=samp_crystal.adc() ;
502  adcG[i]=samp_crystal.gainId();
503 
504  if (i==0) adcGain=adcG[i];
505  if (i>0) adcGain=TMath::Max(adcG[i],adcGain);
506 
507  if (adc[i]>adcmax) {
508  adcmax=adc[i];
509  }
510  }
511 
512  for(dsum=0.,dsum1=0.,k=0;k<_presample;k++) {
513  dsum+=adc[k];
514  if(k<_presample-1) dsum1+=adc[k];
515  }
516 
517  bl=dsum/((double)_presample);
518  bl1=dsum1/((double)_presample-1);
519 
520  for(val_max=0.,k=0;k<_nsamples;k++) {
521  yrange[k]=adc[k] - bl;
522  if(yrange[k] > val_max) {
523  val_max= yrange[k]; samplemax=k;
524  }
525  }
526 
527  if(samplemax==4 || samplemax==5) {
528  val_max=val_max+bl-bl1;
529  for(k=0;k<_nsamples;k++) {
530  yrange[k]=yrange[k]+bl-bl1;
531  }
532  }
533 
534  for(unsigned int k=0;k<_nsamples;k++) {
535  adc[k]=yrange[k];
536  }
537 
538  pn0=allPNAmpl[MyPn0];
539  pn1=allPNAmpl[MyPn1];
540 
541  if(samplemax>=_timingcutlow && samplemax<=_timingcuthigh && lightside==side) ADCtrees->Fill();
542 
543  }
544  }
545 
546 }// analyze
static XYCoord localCoord(int icr)
Definition: MEEBGeom.cc:153
static int lmmod(SuperCrysCoord iX, SuperCrysCoord iY)
Definition: MEEEGeom.cc:94
static int crystal(CrysCoord ix, CrysCoord iy)
Definition: MEEEGeom.cc:398
int xtalId() const
get the channel id
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
int stripId() const
get the tower id
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
int init
Definition: HydjetWrapper.h:67
std::vector< EcalDCCHeaderBlock >::const_iterator const_iterator
int towerId() const
get the tower id
const_iterator begin() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
static std::pair< int, int > pn(int ilmmod)
Definition: MEEBGeom.cc:479
EcalElectronicsId getElectronicsId(const DetId &id) const
Get the electronics id for this det id.
static std::pair< int, int > pn(int dee, int ilmod)
Definition: MEEEGeom.cc:615
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
Definition: MEEBGeom.cc:341
static int lmmod(EBGlobalCoord ieta, EBGlobalCoord iphi)
Definition: MEEBGeom.cc:93
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:535
int k[5][pyjets_maxn]
const_iterator end() const
T Max(T a, T b)
Definition: MathUtil.h:44
static int side(EBGlobalCoord ieta, EBGlobalCoord iphi)
Definition: MEEBGeom.cc:114
T const * product() const
Definition: Handle.h:81
const_iterator end() const
Definition: colors.py:1
T get() const
Definition: EventSetup.h:63
Definition: TPNFit.h:8
EcalLogicID towerID(EcalElectronicsId const &)
T const * product() const
Definition: ESHandle.h:86
Definition: vlib.h:208
int channelId() const
so far for EndCap only :
const_iterator begin() const
Definition: event.py:1
int adc() const
get the ADC sample (12 bits)
void EcalPerEvtLaserAnalyzer::beginJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 117 of file EcalPerEvtLaserAnalyzer.cc.

References adc, ADCfile, ADCFile, ADCtrees, color, dccID, eta, IsFileCreated, dataset::name, nCh, nCrys, peak, phi, pn0, pn1, resdir_, and ttrig.

117  {
118  //========================================================================
119 
120 
121  // Define temporary files' names
122 
123  stringstream namefile1;
124  namefile1 <<resdir_<< "/ADCSamples.root" ;
125 
126  ADCfile=namefile1.str();
127 
128  // Create temporary file and trees to save adc samples
129 
130  ADCFile = new TFile(ADCfile.c_str(),"RECREATE");
131 
132 
133  stringstream name;
134  name <<"ADCTree";
135 
136  ADCtrees= new TTree(name.str().c_str(),name.str().c_str());
137 
138  ADCtrees->Branch( "iphi", &phi, "phi/I" );
139  ADCtrees->Branch( "ieta", &eta, "eta/I" );
140  ADCtrees->Branch( "dccID", &dccID, "dccID/I" );
141  ADCtrees->Branch( "event", &event, "event/I" );
142  ADCtrees->Branch( "color", &color, "color/I" );
143  ADCtrees->Branch( "adc", &adc , "adc[10]/D" );
144  ADCtrees->Branch( "ttrigMatacq", &ttrig, "ttrig/D" );
145  ADCtrees->Branch( "peakMatacq", &peak, "peak/D" );
146  ADCtrees->Branch( "pn0", &pn0, "pn0/D" );
147  ADCtrees->Branch( "pn1", &pn1, "pn1/D" );
148 
149  ADCtrees->SetBranchAddress( "ieta", &eta );
150  ADCtrees->SetBranchAddress( "iphi", &phi );
151  ADCtrees->SetBranchAddress( "dccID", &dccID );
152  ADCtrees->SetBranchAddress( "event", &event );
153  ADCtrees->SetBranchAddress( "color", &color );
154  ADCtrees->SetBranchAddress( "adc", adc );
155  ADCtrees->SetBranchAddress( "ttrigMatacq", &ttrig );
156  ADCtrees->SetBranchAddress( "peakMatacq", &peak );
157  ADCtrees->SetBranchAddress( "pn0", &pn0 );
158  ADCtrees->SetBranchAddress( "pn1", &pn1 );
159 
160  IsFileCreated=0;
161  nCh=nCrys;
162 
163 }
Definition: event.py:1
void EcalPerEvtLaserAnalyzer::endJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 550 of file EcalPerEvtLaserAnalyzer.cc.

References _channel, _fedid, _firstsample, _lastsample, _niter, _nsamples, _tower, adc, ADCfile, ADCFile, ADCtrees, alpha, apdAmpl, APDFile, apdTime, APDtrees, pfBoostedDoubleSVAK8TagInfos_cfi::beta, channelNumber, vertices_cff::chi2, color, gather_cfg::cout, TkAlMuonSelectors_cfi::cut, dccID, DEFINE_FWK_MODULE, RemoveAddSevLevel::flag, edmStreamStallGrapher::getTime(), header, mps_fire::i, init, IsHeaderFilled, IsThereDataADC, nColor, peak, pn0, pn1, refalphabeta_, resfile, ecaldqm::towerID(), and ttrig.

Referenced by o2olib.O2ORunMgr::executeJob().

550  {
551 //========================================================================
552 
553 
554  assert( colors.size()<= nColor );
555  unsigned int nCol=colors.size();
556 
557 
558  ADCtrees->Write();
559 
560 
561  cout << "\n\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
562  cout << "\t+=+ Analyzing laser data: getting per event +=+" << endl;
563  cout << "\t+=+ APD Amplitudes and ADC samples +=+"<< endl;
564  cout << "\t+=+ for fed:" <<_fedid<<", tower:"<<_tower<<", and channel:" << _channel << endl;
565 
566 
567  // Define temporary tree to save APD amplitudes
568 
569  APDFile = new TFile(resfile.c_str(),"RECREATE");
570 
571  int ieta, iphi, channelID, towerID, flag;
572  double alpha, beta;
573 
574 
575  colors.push_back( color );
576 
577  for (unsigned int i=0;i<nCol;i++){
578 
579  stringstream name1;
580  name1<<"headerCol"<<colors[i];
581 
582  header[i] = new TTree(name1.str().c_str(),name1.str().c_str());
583 
584  header[i]->Branch( "alpha", &alpha, "alpha/D" );
585  header[i]->Branch( "beta", &beta, "beta/D" );
586  header[i]->Branch( "iphi", &iphi, "iphi/I" );
587  header[i]->Branch( "ieta", &ieta, "ieta/I" );
588  header[i]->Branch( "dccID", &dccID, "dccID/I" );
589  header[i]->Branch( "towerID", &towerID, "towerID/I" );
590  header[i]->Branch( "channelID", &channelID, "channelID/I" );
591 
592  header[i]->SetBranchAddress( "alpha", &alpha );
593  header[i]->SetBranchAddress( "beta", &beta );
594  header[i]->SetBranchAddress( "iphi", &iphi );
595  header[i]->SetBranchAddress( "ieta", &ieta );
596  header[i]->SetBranchAddress( "dccID", &dccID );
597  header[i]->SetBranchAddress( "towerID", &towerID );
598  header[i]->SetBranchAddress( "channelID", &channelID );
599 
600  }
601 
602  stringstream name2;
603  name2<<"APDTree";
604  APDtrees= new TTree(name2.str().c_str(),name2.str().c_str());
605 
606  //List of branches
607 
608  APDtrees->Branch( "event", &event, "event/I" );
609  APDtrees->Branch( "color", &color, "color/I" );
610  APDtrees->Branch( "adc", &adc , "adc[10]/D" );
611  APDtrees->Branch( "peakMatacq", &peak , "peak/D" );
612  APDtrees->Branch( "ttrigMatacq", &ttrig , "ttrig/D" );
613  APDtrees->Branch( "apdAmpl", &apdAmpl, "apdAmpl/D" );
614  APDtrees->Branch( "apdTime", &apdTime, "apdTime/D" );
615  APDtrees->Branch( "flag", &flag, "flag/I" );
616  APDtrees->Branch( "pn0", &pn0, "pn0/D" );
617  APDtrees->Branch( "pn1", &pn1, "pn1/D" );
618 
619  APDtrees->SetBranchAddress( "event", &event );
620  APDtrees->SetBranchAddress( "color", &color );
621  APDtrees->SetBranchAddress( "adc", adc );
622  APDtrees->SetBranchAddress( "peakMatacq", &peak );
623  APDtrees->SetBranchAddress( "ttrigMatacq", &ttrig );
624  APDtrees->SetBranchAddress( "apdAmpl", &apdAmpl );
625  APDtrees->SetBranchAddress( "apdTime", &apdTime );
626  APDtrees->SetBranchAddress( "flag", &flag );
627  APDtrees->SetBranchAddress( "pn0", &pn0 );
628  APDtrees->SetBranchAddress( "pn1", &pn1 );
629 
630  // Retrieve alpha and beta for APD amplitudes calculation
631 
632 
633  TFile *alphaFile = new TFile(refalphabeta_.c_str());
634  TTree *alphaTree[2];
635 
636  Double_t alphaRun, betaRun;
637  int ietaRun, iphiRun, channelIDRun, towerIDRun, dccIDRun, flagRun;
638 
639  for( unsigned int i=0;i<nCol;i++){
640 
641  stringstream name3;
642  name3<<"ABCol"<<i;
643  alphaTree[i]=(TTree*)alphaFile->Get(name3.str().c_str());
644  alphaTree[i]->SetBranchStatus( "*", false );
645  alphaTree[i]->SetBranchStatus( "alpha", true );
646  alphaTree[i]->SetBranchStatus( "beta", true );
647  alphaTree[i]->SetBranchStatus( "iphi", true );
648  alphaTree[i]->SetBranchStatus( "ieta", true );
649  alphaTree[i]->SetBranchStatus( "dccID", true );
650  alphaTree[i]->SetBranchStatus( "towerID", true );
651  alphaTree[i]->SetBranchStatus( "channelID", true );
652  alphaTree[i]->SetBranchStatus( "flag", true );
653 
654  alphaTree[i]->SetBranchAddress( "alpha", &alphaRun );
655  alphaTree[i]->SetBranchAddress( "beta", &betaRun );
656  alphaTree[i]->SetBranchAddress( "iphi", &iphiRun );
657  alphaTree[i]->SetBranchAddress( "ieta", &ietaRun );
658  alphaTree[i]->SetBranchAddress( "dccID", &dccIDRun );
659  alphaTree[i]->SetBranchAddress( "towerID", &towerIDRun );
660  alphaTree[i]->SetBranchAddress( "channelID", &channelIDRun );
661  alphaTree[i]->SetBranchAddress( "flag", &flagRun );
662 
663  }
664 
665  PulseFitWithFunction * pslsfit = new PulseFitWithFunction();
666 
667  double chi2;
668 
669  for (unsigned int icol=0;icol<nCol;icol++){
670 
671  IsThereDataADC[icol]=1;
672  stringstream cut;
673  cut <<"color=="<<colors.at(icol);
674  if(ADCtrees->GetEntries(cut.str().c_str())<10) IsThereDataADC[icol]=0;
675  IsHeaderFilled[icol]=0;
676 
677  }
678 
679  // Define submodule and channel number inside the submodule (as Patrice)
680 
681 
682  Long64_t nbytes = 0, nb = 0;
683  for (Long64_t jentry=0; jentry< ADCtrees->GetEntriesFast();jentry++) { // Loop on events
684  nb = ADCtrees->GetEntry(jentry); nbytes += nb;
685 
686  int iCry=channelNumber;
687 
688  // get back color
689 
690  unsigned int iCol=0;
691  for(unsigned int i=0;i<nCol;i++){
692  if(color==colors[i]) {
693  iCol=i;
694  i=colors.size();
695  }
696  }
697 
698  alphaTree[iCol]->GetEntry(iCry);
699 
700 
701  flag=flagRun;
702  iphi=iphiRun;
703  ieta=ietaRun;
704  towerID=towerIDRun;
705  channelID=channelIDRun;
706  alpha=alphaRun;
707  beta=betaRun;
708 
709  if (IsHeaderFilled[iCol]==0){
710  header[iCol]->Fill();
711  IsHeaderFilled[iCol]=1;
712 
713  }
714  // Amplitude calculation
715 
716  apdAmpl=0;
717  apdTime=0;
718 
719  pslsfit -> init(_nsamples,_firstsample,_lastsample,_niter, alphaRun, betaRun);
720  chi2 = pslsfit -> doFit(&adc[0]);
721 
722  if( chi2 < 0. || chi2 == 102 || chi2 == 101 ) {
723 
724  apdAmpl=0;
725  apdTime=0;
726 
727  }else{
728 
729  apdAmpl = pslsfit -> getAmpl();
730  apdTime = pslsfit -> getTime();
731 
732  }
733 
734  APDtrees->Fill();
735 
736  }
737 
738  alphaFile->Close();
739 
740  ADCFile->Close();
741 
742  APDFile->Write();
743  APDFile->Close();
744 
745 
746 
747 
748  // Remove unwanted files
749 
750  stringstream del;
751  del << "rm " <<ADCfile;
752  system(del.str().c_str());
753 
754  cout << "\t+=+ .................................................. done +=+" << endl;
755  cout << "\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+" << endl;
756 }
float alpha
Definition: AMPTWrapper.h:95
int init
Definition: HydjetWrapper.h:67
Definition: colors.py:1
EcalLogicID towerID(EcalElectronicsId const &)
Definition: event.py:1

Member Data Documentation

unsigned int EcalPerEvtLaserAnalyzer::_channel
private

Definition at line 71 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and endJob().

std::string EcalPerEvtLaserAnalyzer::_ecalPart
private

Definition at line 72 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and EcalPerEvtLaserAnalyzer().

int EcalPerEvtLaserAnalyzer::_fedid
private

Definition at line 69 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and endJob().

unsigned int EcalPerEvtLaserAnalyzer::_firstsample
private

Definition at line 58 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

unsigned int EcalPerEvtLaserAnalyzer::_firstsamplePN
private

Definition at line 64 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_lastsample
private

Definition at line 59 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

unsigned int EcalPerEvtLaserAnalyzer::_lastsamplePN
private

Definition at line 65 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_niter
private

Definition at line 68 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

unsigned int EcalPerEvtLaserAnalyzer::_nsamples
private

Definition at line 56 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and endJob().

unsigned int EcalPerEvtLaserAnalyzer::_nsamplesPN
private

Definition at line 62 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_presample
private

Definition at line 57 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_presamplePN
private

Definition at line 63 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_samplemax
private

Definition at line 61 of file EcalPerEvtLaserAnalyzer.h.

unsigned int EcalPerEvtLaserAnalyzer::_samplemin
private

Definition at line 60 of file EcalPerEvtLaserAnalyzer.h.

unsigned int EcalPerEvtLaserAnalyzer::_timingcuthigh
private

Definition at line 67 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_timingcutlow
private

Definition at line 66 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::_tower
private

Definition at line 70 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and endJob().

double EcalPerEvtLaserAnalyzer::adc[10]
private

Definition at line 142 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

std::string EcalPerEvtLaserAnalyzer::ADCfile
private

Definition at line 86 of file EcalPerEvtLaserAnalyzer.h.

Referenced by beginJob(), and endJob().

TFile* EcalPerEvtLaserAnalyzer::ADCFile
private

Definition at line 122 of file EcalPerEvtLaserAnalyzer.h.

Referenced by beginJob(), and endJob().

int EcalPerEvtLaserAnalyzer::adcG[10]
private

Definition at line 143 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

TTree* EcalPerEvtLaserAnalyzer::ADCtrees
private

Definition at line 123 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

std::string EcalPerEvtLaserAnalyzer::alphafile
private

Definition at line 85 of file EcalPerEvtLaserAnalyzer.h.

double EcalPerEvtLaserAnalyzer::apdAmpl
private

Definition at line 148 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

std::string EcalPerEvtLaserAnalyzer::APDfile
private

Definition at line 87 of file EcalPerEvtLaserAnalyzer.h.

TFile* EcalPerEvtLaserAnalyzer::APDFile
private

Definition at line 125 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

double EcalPerEvtLaserAnalyzer::apdTime
private

Definition at line 149 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

TTree* EcalPerEvtLaserAnalyzer::APDtrees
private

Definition at line 127 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

int EcalPerEvtLaserAnalyzer::channelNumber
private

Definition at line 113 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and endJob().

int EcalPerEvtLaserAnalyzer::colMat
private

Definition at line 135 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

int EcalPerEvtLaserAnalyzer::color
private
std::vector<int> EcalPerEvtLaserAnalyzer::colors
private

Definition at line 116 of file EcalPerEvtLaserAnalyzer.h.

int EcalPerEvtLaserAnalyzer::dccID
private

Definition at line 109 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

std::string EcalPerEvtLaserAnalyzer::digiCollection_
private

Definition at line 76 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and EcalPerEvtLaserAnalyzer().

std::string EcalPerEvtLaserAnalyzer::digiPNCollection_
private

Definition at line 77 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and EcalPerEvtLaserAnalyzer().

std::string EcalPerEvtLaserAnalyzer::digiProducer_
private

Definition at line 78 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and EcalPerEvtLaserAnalyzer().

int EcalPerEvtLaserAnalyzer::doesRefFileExist
private

Definition at line 130 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

int EcalPerEvtLaserAnalyzer::eta
private
int EcalPerEvtLaserAnalyzer::event
private
std::string EcalPerEvtLaserAnalyzer::eventHeaderCollection_
private

Definition at line 79 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and EcalPerEvtLaserAnalyzer().

std::string EcalPerEvtLaserAnalyzer::eventHeaderProducer_
private

Definition at line 80 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and EcalPerEvtLaserAnalyzer().

int EcalPerEvtLaserAnalyzer::evtMat
private

Definition at line 135 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

int EcalPerEvtLaserAnalyzer::fedID
private

Definition at line 110 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

TTree* EcalPerEvtLaserAnalyzer::header[2]
private

Definition at line 126 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

int EcalPerEvtLaserAnalyzer::iEvent
private

Definition at line 51 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

int EcalPerEvtLaserAnalyzer::IsFileCreated
private

Definition at line 99 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and beginJob().

int EcalPerEvtLaserAnalyzer::IsHeaderFilled[nColor]
private

Definition at line 132 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

int EcalPerEvtLaserAnalyzer::IsThereDataADC[nColor]
private

Definition at line 131 of file EcalPerEvtLaserAnalyzer.h.

Referenced by endJob().

int EcalPerEvtLaserAnalyzer::lightside
private

Definition at line 111 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

TFile* EcalPerEvtLaserAnalyzer::matacqFile
private

Definition at line 119 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

TTree* EcalPerEvtLaserAnalyzer::matacqTree
private

Definition at line 120 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

unsigned int EcalPerEvtLaserAnalyzer::nCh
private

Definition at line 103 of file EcalPerEvtLaserAnalyzer.h.

Referenced by beginJob().

unsigned int EcalPerEvtLaserAnalyzer::nCrys
private

Definition at line 94 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and EcalPerEvtLaserAnalyzer().

unsigned int EcalPerEvtLaserAnalyzer::nSides
private

Definition at line 96 of file EcalPerEvtLaserAnalyzer.h.

unsigned int EcalPerEvtLaserAnalyzer::nTT
private

Definition at line 95 of file EcalPerEvtLaserAnalyzer.h.

Referenced by EcalPerEvtLaserAnalyzer().

double EcalPerEvtLaserAnalyzer::peak
private

Definition at line 134 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

double EcalPerEvtLaserAnalyzer::peakMat
private

Definition at line 134 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

int EcalPerEvtLaserAnalyzer::phi
private
double EcalPerEvtLaserAnalyzer::pn[50]
private

Definition at line 147 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

double EcalPerEvtLaserAnalyzer::pn0
private

Definition at line 146 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

double EcalPerEvtLaserAnalyzer::pn1
private

Definition at line 146 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

double EcalPerEvtLaserAnalyzer::pnAmpl
private

Definition at line 150 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

std::string EcalPerEvtLaserAnalyzer::refalphabeta_
private

Definition at line 75 of file EcalPerEvtLaserAnalyzer.h.

Referenced by EcalPerEvtLaserAnalyzer(), and endJob().

std::string EcalPerEvtLaserAnalyzer::resdir_
private

Definition at line 74 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and EcalPerEvtLaserAnalyzer().

std::string EcalPerEvtLaserAnalyzer::resfile
private

Definition at line 88 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), and endJob().

int EcalPerEvtLaserAnalyzer::runNum
private

Definition at line 108 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

int EcalPerEvtLaserAnalyzer::runType
private

Definition at line 107 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

double EcalPerEvtLaserAnalyzer::tt
private

Definition at line 144 of file EcalPerEvtLaserAnalyzer.h.

double EcalPerEvtLaserAnalyzer::ttMat
private

Definition at line 134 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze().

double EcalPerEvtLaserAnalyzer::ttrig
private

Definition at line 145 of file EcalPerEvtLaserAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().