CMS 3D CMS Logo

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

#include <CalibCalorimetry/EcalLaserAnalyzerYousi/src/EcalLaserAnalyzerYousi.cc>

Inheritance diagram for EcalLaserAnalyzerYousi:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 EcalLaserAnalyzerYousi (const edm::ParameterSet &)
 
 ~EcalLaserAnalyzerYousi () 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 Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 

Private Attributes

TH2F * APD
 
TH1F * APD_LM [9]
 
TH2F * APD_RMS
 
TH2F * APDPN
 
TH2F * APDPN_C
 
TH2F * APDPN_J
 
TH2F * APDPN_J_H [2]
 
TH2F * APDPN_J_LM [9]
 
TH1F * APDPN_LM [9]
 
TH2F * APDPN_RMS
 
TH1F * C_APD [1700]
 
TH1F * C_APDPN [1700]
 
TH2F * C_APDPN_J [1700]
 
TH1F * C_J [1700]
 
TH1F * C_PN [1700]
 
TNtuple * C_Tree [1700]
 
TH2F * Count
 
std::string digiProducer_
 
TFile * fAPD
 
TH1F * FitHist
 
TFile * fPN
 
TFile * fROOT
 
std::string hitCollection_
 
std::string hitProducer_
 
std::string outFileName_
 
TH1F * peakAPD [2]
 
TH1F * peakAPDPN [2]
 
TH2F * PN
 
std::string PNdigiCollection_
 
std::string Run_
 
std::string SM_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 56 of file EcalLaserAnalyzerYousi.cc.

Constructor & Destructor Documentation

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

Definition at line 128 of file EcalLaserAnalyzerYousi.cc.

References digiProducer_, edm::ParameterSet::getUntrackedParameter(), hitCollection_, hitProducer_, outFileName_, PNdigiCollection_, Run_, SM_, and AlCaHLTBitMon_QueryRunRegistry::string.

129 {
130  //now do what ever initialization is needed
131  //get the PN and AB file names
132  //get the output file names, digi producers, etc
133 
134  hitCollection_ = iConfig.getUntrackedParameter<std::string>("hitCollection");
135  hitProducer_ = iConfig.getUntrackedParameter<std::string>("hitProducer");
136  // PNFileName_ = iConfig.getUntrackedParameter<std::string>("PNFileName");
137  // ABFileName_ = iConfig.getUntrackedParameter<std::string>("ABFileName");
138  outFileName_ = iConfig.getUntrackedParameter<std::string>("outFileName");
139  SM_ = iConfig.getUntrackedParameter<std::string>("SM");
140  Run_ = iConfig.getUntrackedParameter<std::string>("Run");
141  digiProducer_ = iConfig.getUntrackedParameter<std::string>("digiProducer");
142  PNdigiCollection_ = iConfig.getUntrackedParameter<std::string>("PNdigiCollection");
143 
144 
145 
146 
147 }
T getUntrackedParameter(std::string const &, T const &) const
EcalLaserAnalyzerYousi::~EcalLaserAnalyzerYousi ( )
override

Definition at line 150 of file EcalLaserAnalyzerYousi.cc.

151 {
152 
153  // do anything here that needs to be done at desctruction time
154  // (e.g. close files, deallocate resources etc.)
155 
156 
157 
158 }

Member Function Documentation

void EcalLaserAnalyzerYousi::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 167 of file EcalLaserAnalyzerYousi.cc.

References ecalMGPA::adc(), APD_LM, APDPN_C, APDPN_J, APDPN_J_H, APDPN_J_LM, APDPN_LM, edm::SortedCollection< T, SORT >::begin(), C_APD, C_APDPN, C_APDPN_J, C_J, C_PN, C_Tree, pfMuonSelector_cfi::Chi2, CN, digiProducer_, edm::EventID::event(), cppFunctionSkipper::exception, FitHist, edm::Event::getByLabel(), hitCollection_, hitProducer_, hfClusterShapes_cfi::hits, EBDetId::ic(), edm::EventBase::id(), gen::k, SiStripPI::max, peakAPD, peakAPDPN, PNdigiCollection_, simplePhotonAnalyzer_cfi::sample, edm::SortedCollection< T, SORT >::size(), EcalDCCHeaderBlock::EcalDCCEventSettings::wavelength, and z.

168 {
169  using namespace edm;
170 
171  // if ( fPN->IsOpen() ) { edm::LogInfo("EcalLaserAnalyzerYousi") <<"fPN is open in analyze OKAAAAAAAAYYY \n\n"; }
172 
173 
174 
176  iEvent.getByLabel(digiProducer_, DCCHeaders);
177 
178  EcalDCCHeaderBlock::EcalDCCEventSettings settings = DCCHeaders->begin()->getEventSettings();
179 
180  int wavelength = settings.wavelength;
181 
182  // std::cout<<"wavelength: "<<wavelength<<"\n\n";
183 
184  if ( wavelength !=0 ) { return; }//only process blue laser
185 
187 
188  try{
189  iEvent.getByLabel(hitProducer_ , hitCollection_ , hits);
190  // iEvent.getByType(hits);
191  } catch ( std::exception& ex ) {
192  LogError("EcalLaserAnalyzerYousi") << "Cannot get product: EBRecHitCollection from: "
193  << hitCollection_ << " - returning.\n\n";
194  // return;
195  }
196 
198 
199  try{
200  // iEvent.getByLabel(hitProducer_, hits);
201  iEvent.getByLabel(digiProducer_, PNdigiCollection_, pndigis);
202  //iEvent.getByType( pndigis );
203  } catch ( std::exception& ex ) {
204  LogError("EcalLaserAnalyzerYousi") << "Cannot get product: EBdigiCollection from: "
205  << "getbytype" << " - returning.\n\n";
206  // return;
207  }
208 
209 
210  Float_t PN_amp[5];
211 
212  //do some averaging over each pair of PNs
213  for (int j = 0; j < 5; ++j) {
214  PN_amp[j] = 0;
215  for (int z = 0; z<2; ++z) {
216  FitHist->Reset();
217  TF1 peakFit("peakFit", "[0] +[1]*x +[2]*x^2", 30, 50);
218  TF1 pedFit("pedFit","[0]",0,5);
219 
220  for(int k = 0; k < 50; k++){
221  FitHist->SetBinContent(k, (*pndigis)[j+z*5].sample(k).adc() );
222  }
223  pedFit.SetParameter(0,750);
224  FitHist->Fit(&pedFit,"RQI");
225  Float_t ped = pedFit.GetParameter(0);
226 
227  Int_t maxbin = FitHist->GetMaximumBin();
228  peakFit.SetRange(FitHist->GetBinCenter(maxbin)-4*FitHist->GetBinWidth(maxbin),
229  FitHist->GetBinCenter(maxbin)+4*FitHist->GetBinWidth(maxbin));
230  peakFit.SetParameters(750,4,-.05);
231  FitHist->Fit(&peakFit,"RQI");
232  Float_t max = peakFit.Eval(-peakFit.GetParameter(1)/(2*peakFit.GetParameter(2)));
233  if(ped != max){
234  PN_amp[j] = PN_amp[j] + max - ped;
235  } else {
236  PN_amp[j] = PN_amp[j] + max;
237  }
238 
239  }//end of z loop
240  PN_amp[j] = PN_amp[j]/2.0;
241  }//end of j loop
242 
243 
244 
245 
246  //do some real PN, APD calculations
247 
248 
249 
250  //FIXME. previously used .info files to get time, what to do now?
251 
252  // TNtuple *Time = new TNtuple("Time", "Time", "Time");
253  // Int_t iTime = Get_Time(Input_File);
254  // Time->Fill(iTime);
255 
256 
257  Float_t fTree[7];
258 
259 
260  // b->GetEntry(EVT);
261  EBDetId ID;
262  Float_t theAPD;
263  Float_t thePN;
264  Float_t Jitter;
265  Float_t Chi2;
266  Int_t CN = hits->size();
267  // cout<<"num CN: "<<CN<<endl;
268  for(int j = 0; j < CN; j++){
269  ID = (*hits)[j].id();
270  theAPD = (*hits)[j].amplitude();
271  Jitter = (*hits)[j].jitter();
272  Chi2 = (*hits)[j].chi2();
273  thePN = PN_amp[ (ID.ic() + 299)/400 ];
274 
275  // cout<<"THE APD: "<<theAPD<<endl;
276  // cout<<"THE PN: "<<thePN<<endl;
277 
278  C_APD[ID.ic()-1]->Fill(theAPD);
279  C_APDPN[ID.ic()-1]->Fill(theAPD/thePN);
280  C_PN[ID.ic()-1]->Fill(thePN);
281  C_J[ID.ic()-1]->Fill(Jitter);
282  C_APDPN_J[ID.ic()-1]->Fill(Jitter, theAPD/thePN);
283  APDPN_J->Fill(Jitter, theAPD/thePN);
284  APDPN_C->Fill(Chi2, theAPD/thePN);
285  fTree[0] = theAPD;
286  fTree[1] = thePN;
287  fTree[2] = theAPD/thePN;
288  fTree[3] = Jitter;
289  fTree[4] = Chi2;
290  fTree[5] = (*hits)[j].pedestal();
291  fTree[6] = iEvent.id().event();
292  C_Tree[ID.ic()-1]->Fill(fTree);
293  if(((ID.ic()-1)%20 > 9)||((ID.ic()-1)<100)){
294  peakAPD[0]->Fill(theAPD);
295  peakAPDPN[0]->Fill(theAPD/thePN);
296  APDPN_J_H[0]->Fill(Jitter, theAPD/thePN);
297  } else {
298  peakAPD[1]->Fill(theAPD);
299  peakAPDPN[1]->Fill(theAPD/thePN);
300  APDPN_J_H[1]->Fill(Jitter, theAPD/thePN);
301  }
302  if((ID.ic()-1) < 100){
303  APD_LM[0]->Fill(theAPD);
304  APDPN_LM[0]->Fill(theAPD/thePN);
305  APDPN_J_LM[0]->Fill(Jitter, theAPD/thePN);
306  }
307  else {
308  Int_t index;
309  if(((ID.ic()-1)%20) < 10){
310  index = ((ID.ic()-101)/400)*2 + 1;
311  APD_LM[index]->Fill(theAPD);
312  APDPN_LM[index]->Fill(theAPD/thePN);
313  APDPN_J_LM[index]->Fill(Jitter, theAPD/thePN);
314  }
315  else {
316  index = ((ID.ic()-101)/400)*2 + 2;
317  APD_LM[index]->Fill(theAPD);
318  APDPN_LM[index]->Fill(theAPD/thePN);
319  APDPN_J_LM[index]->Fill(Jitter, theAPD/thePN);
320  }
321  }
322  }//end of CN loop
323 
324 
325 
326 
327  //now that you got the PN and APD's, make the ntuples. done
328 
329  //vec from ROOT version should correspond to hits_itr or something similar. done
330 
331  //check WL from PNdiodedigi, should be ==0, o.w (blue data only). don't process. done
332 
333  //get PN pulse, and do fitting of pulse. i.e. fill hist with PN.apd() or equivalent. done
334 
335  //fit to first 5 for PED, and 30-50 bins for pulse (poly2 for the moment). done
336 
337 
338 
339 
340 }
int adc(sample_type sample)
get the ADC sample (12 bits)
EventNumber_t event() const
Definition: EventID.h:41
uint32_t ID
Definition: Definitions.h:26
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:475
int ic() const
get ECAL/crystal number inside SM
Definition: EBDetId.cc:46
int k[5][pyjets_maxn]
static const float CN[]
Definition: sicif.h:76
edm::EventID id() const
Definition: EventBase.h:60
HLT enums.
size_type size() const
const_iterator begin() const
void EcalLaserAnalyzerYousi::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 345 of file EcalLaserAnalyzerYousi.cc.

References APD, APD_LM, APD_RMS, APDPN, APDPN_C, APDPN_J, APDPN_J_H, APDPN_J_LM, APDPN_LM, APDPN_RMS, C_APD, C_APDPN, C_APDPN_J, C_J, C_PN, C_Tree, Count, FitHist, fROOT, mps_fire::i, dataset::name, outFileName_, peakAPD, peakAPDPN, and PN.

346 {
347 
348  edm::LogInfo("EcalLaserAnalyzerYousi") << "running laser analyzer \n\n";
349 
350  fROOT = new TFile(outFileName_.c_str(), "RECREATE");
351  fROOT->cd();
352 
353  //init all the histos and files?
354  APD = new TH2F("APD", "APD", 85, 0., 85., 20, 0., 20.);
355  APD_RMS = new TH2F("APD_RMS", "APD_RMS", 85, 0., 85., 20, 0., 20.);
356  APDPN = new TH2F("APDPN", "APDPN", 85, 0., 85., 20, 0., 20.);
357  APDPN_RMS = new TH2F("APDPN_RMS", "APDPN_RMS", 85, 0., 85., 20, 0., 20.);
358  PN = new TH2F("PN", "PN", 85, 0., 85., 20, 0., 20.);
359  APDPN_J = new TH2F("JittervAPDPN", "JittervAPDPN",250, 3., 7., 250, 1., 2.);
360  APDPN_C = new TH2F("Chi2vAPDPN", "Chi2vAPDPN", 250, 0., 50., 250, 0., 5.0);
361  FitHist = new TH1F("FitHist", "FitHist", 50, 0, 50);
362  Count = new TH2F("Count", "Count", 85, 0., 1., 20, 0., 1.);
363 
364 
365  for(int i = 0; i < 1700; i++){
366  std::ostringstream name_1;
367  std::ostringstream name_2;
368  std::ostringstream name_3;
369  std::ostringstream name_4;
370  std::ostringstream name_5;
371  name_1 << "C_APD_" << i+1;
372  name_2 << "C_APDPN_" << i+1;
373  name_3 << "C_PN_" << i+1;
374  name_4 << "C_J_" << i+1;
375  name_5 << "C_APDPN_J_" << i+1;
376  C_APD[i] = new TH1F(name_1.str().c_str(), name_1.str().c_str(), 2500, 0., 5000.);
377  C_APDPN[i] = new TH1F(name_2.str().c_str(), name_2.str().c_str(), 20000, 0., 25.);
378  C_PN[i] = new TH1F(name_3.str().c_str(), name_3.str().c_str(), 1000, 0., 4000.);
379  C_J[i] = new TH1F(name_4.str().c_str(), name_4.str().c_str(), 250, 3.0, 7.);
380  C_APDPN_J[i] = new TH2F(name_5.str().c_str(), name_5.str().c_str(), 250, 3.0, 6., 250, 1., 2.2);
381  }
382 
383  for(int i = 0; i < 2; i++){
384  std::ostringstream aname_1;
385  std::ostringstream aname_2;
386  std::ostringstream aname_3;
387  aname_1 << "peakAPD_" << i;
388  aname_2 << "peakAPDPN_" << i;
389  aname_3 << "JittervAPDPN_Half_" << i;
390  peakAPD[i] = new TH1F(aname_1.str().c_str(), aname_1.str().c_str(), 1000, 0., 5000.);
391  peakAPDPN[i] = new TH1F(aname_2.str().c_str(), aname_2.str().c_str(), 1000, 0., 8.);
392  APDPN_J_H[i] = new TH2F(aname_3.str().c_str(), aname_3.str().c_str(), 250, 3., 7., 250, 1., 2.2);
393  }
394 
395  for(int i = 0; i < 9; i++){
396  std::ostringstream bname_1;
397  std::ostringstream bname_2;
398  std::ostringstream bname_3;
399  bname_1 << "APD_LM_" << i;
400  bname_2 << "APDPN_LM_" << i;
401  bname_3 << "APDPN_J_LM_" << i;
402  APD_LM[i] = new TH1F(bname_1.str().c_str(), bname_1.str().c_str(), 500, 0., 5000.);
403  APDPN_LM[i] = new TH1F(bname_2.str().c_str(), bname_2.str().c_str(), 500, 0., 8.);
404  APDPN_J_LM[i] = new TH2F(bname_3.str().c_str(), bname_3.str().c_str(), 250, 3., 7., 250, 1., 2.2);
405  }
406 
407  //get the PN file. or don't get, and read from event.
408 
409 
410  //don't need to get AB, it will be read in via framework poolsource = ???
411 
412  //configure the final NTuple
413  std::ostringstream varlist;
414  varlist << "APD:PN:APDPN:Jitter:Chi2:ped:EVT";
415  for(int i = 0; i < 1700; i++){
416  std::ostringstream name;
417  name << "C_Tree_" << i+1;
418  C_Tree[i] = (TNtuple*) new TNtuple(name.str().c_str(), name.str().c_str(),
419  varlist.str().c_str());
420  }
421 
422 }
void EcalLaserAnalyzerYousi::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 426 of file EcalLaserAnalyzerYousi.cc.

References APD, APD_LM, APD_RMS, APDPN, APDPN_C, APDPN_J, APDPN_J_H, APDPN_J_LM, APDPN_LM, APDPN_RMS, C_APD, C_APDPN, C_APDPN_J, C_J, C_PN, C_Tree, DEFINE_FWK_MODULE, fROOT, mps_fire::i, outFileName_, peakAPD, peakAPDPN, PN, RMS, and Run_.

Referenced by o2olib.O2ORunMgr::executeJob().

426  {
427 
428  //write the file (get ouput file name first).
429  TFile *fROOT = (TFile*) new TFile(outFileName_.c_str(), "RECREATE");
430 
431  // TDirectory *DIR = fROOT->Get(Run_.c_str());
432  TDirectory *DIR;
433  // if(DIR == NULL){
434  DIR = fROOT->mkdir(Run_.c_str());
435  // }
436  DIR->cd();
437  for(int j = 0; j < 1700; j++){
438  Float_t min_r, max_r;
439  Float_t RMS, Sigma, K;
440  Int_t iCount;
441  TF1 *gs1;
442  TF1 *gs2;
443  TF1 *gs3;
444 
445  RMS = C_APD[j]->GetRMS();
446  APD_RMS->SetBinContent(85-(j/20), 20-(j%20), RMS);
447  Sigma = 999999;
448  K = 2.5;
449  iCount = 0;
450  while(Sigma > RMS){
451  min_r = C_APD[j]->GetBinCenter(C_APD[j]->GetMaximumBin()) - K*RMS;
452  max_r = C_APD[j]->GetBinCenter(C_APD[j]->GetMaximumBin()) + K*RMS;
453  gs1 = new TF1("gs1", "gaus", min_r, max_r);
454  C_APD[j]->Fit(gs1, "RQI");
455  Sigma = gs1->GetParameter(2);
456  K = K*1.5;
457  iCount++;
458  if(iCount > 2){
459  C_APD[j]->Fit("gaus", "QI");
460  gs1 = C_APD[j]->GetFunction("gaus");
461  break;
462  }
463  }
464 
465  RMS = C_APDPN[j]->GetRMS();
466  APDPN_RMS->SetBinContent(85-(j/20), 20-(j%20), RMS);
467  Sigma = 999999;
468  K = 2.5;
469  iCount = 0;
470  while(Sigma > RMS){
471  min_r = C_APDPN[j]->GetBinCenter(C_APDPN[j]->GetMaximumBin()) - K*RMS;
472  max_r = C_APDPN[j]->GetBinCenter(C_APDPN[j]->GetMaximumBin()) + K*RMS;
473  gs2 = new TF1("gs2", "gaus", min_r, max_r);
474  C_APDPN[j]->Fit(gs2, "RQI");
475  Sigma = gs2->GetParameter(2);
476  K = K*1.5;
477  iCount++;
478  if(iCount > 2){
479  C_APDPN[j]->Fit("gaus", "QI");
480  gs2 = C_APDPN[j]->GetFunction("gaus");
481  break;
482  }
483  }
484 
485  TF1 *newgs1;
486  TF1 *newgs2;
487 
488  C_PN[j]->Fit("gaus", "Q");
489  C_APD[j]->Fit("gaus","QI");
490  C_APDPN[j]->Fit("gaus","QI");
491  C_APD[j]->Write("", TObject::kOverwrite);
492  C_APDPN[j]->Write("", TObject::kOverwrite);
493  C_PN[j]->Write("", TObject::kOverwrite);
494  C_J[j]->Write("", TObject::kOverwrite);
495  C_APDPN_J[j]->Write("", TObject::kOverwrite);
496  newgs1 = C_APD[j]->GetFunction("gaus");
497  newgs2 = C_APDPN[j]->GetFunction("gaus");
498  gs3 = C_PN[j]->GetFunction("gaus");
499  Float_t theAPD = newgs1->GetParameter(1);
500  APD->SetBinContent(85-(j/20), 20-(j%20), theAPD);
501  Float_t theAPDPN = newgs2->GetParameter(1);
502  APDPN->SetBinContent(85-(j/20), 20-(j%20), theAPDPN);
503  Float_t thePN = gs3->GetParameter(1);
504  // cout<<"LOOK HERE thePN = "<< thePN<<endl;
505  PN->SetBinContent(85-(j/20), 20-(j%20), thePN);
506  C_Tree[j]->Write("", TObject::kOverwrite);
507  }
508 
509  for(int i = 0; i < 9; i++){
510  APD_LM[i]->Write("", TObject::kOverwrite);
511  APDPN_LM[i]->Write("", TObject::kOverwrite);
512  APDPN_J_LM[i]->Write("", TObject::kOverwrite);
513  }
514 
515 
516  // Time->Write("", TObject::kOverwrite);
517  APD->Write("", TObject::kOverwrite);
518  APD_RMS->Write("", TObject::kOverwrite);
519  APDPN_RMS->Write("", TObject::kOverwrite);
520  APDPN->Write("", TObject::kOverwrite);
521  APDPN_J->Write("", TObject::kOverwrite);
522  APDPN_C->Write("", TObject::kOverwrite);
523  PN->Write("", TObject::kOverwrite);
524  peakAPD[0]->Write("", TObject::kOverwrite);
525  peakAPD[1]->Write("", TObject::kOverwrite);
526  peakAPDPN[0]->Write("", TObject::kOverwrite);
527  peakAPDPN[1]->Write("", TObject::kOverwrite);
528  APDPN_J_H[0]->Write("", TObject::kOverwrite);
529  APDPN_J_H[1]->Write("", TObject::kOverwrite);
530 
531 
532 
533  // don't Make plots
534  // fROOT->Close();
535 
536 // fPN->Close();
537 // fAPD->Close();
538 
539 
540  fROOT->Write();
541 // fROOT->Close();
542 
543 }

Member Data Documentation

TH2F* EcalLaserAnalyzerYousi::APD
private

Definition at line 84 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob(), and endJob().

TH1F* EcalLaserAnalyzerYousi::APD_LM[9]
private

Definition at line 77 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::APD_RMS
private

Definition at line 85 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob(), and endJob().

TH2F* EcalLaserAnalyzerYousi::APDPN
private

Definition at line 86 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob(), and endJob().

TH2F* EcalLaserAnalyzerYousi::APDPN_C
private

Definition at line 90 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::APDPN_J
private

Definition at line 89 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::APDPN_J_H[2]
private

Definition at line 80 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::APDPN_J_LM[9]
private

Definition at line 79 of file EcalLaserAnalyzerYousi.cc.

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

TH1F* EcalLaserAnalyzerYousi::APDPN_LM[9]
private

Definition at line 78 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::APDPN_RMS
private

Definition at line 87 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob(), and endJob().

TH1F* EcalLaserAnalyzerYousi::C_APD[1700]
private

Definition at line 69 of file EcalLaserAnalyzerYousi.cc.

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

TH1F* EcalLaserAnalyzerYousi::C_APDPN[1700]
private

Definition at line 70 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::C_APDPN_J[1700]
private

Definition at line 73 of file EcalLaserAnalyzerYousi.cc.

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

TH1F* EcalLaserAnalyzerYousi::C_J[1700]
private

Definition at line 72 of file EcalLaserAnalyzerYousi.cc.

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

TH1F* EcalLaserAnalyzerYousi::C_PN[1700]
private

Definition at line 71 of file EcalLaserAnalyzerYousi.cc.

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

TNtuple* EcalLaserAnalyzerYousi::C_Tree[1700]
private

Definition at line 100 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::Count
private

Definition at line 93 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob().

std::string EcalLaserAnalyzerYousi::digiProducer_
private

Definition at line 111 of file EcalLaserAnalyzerYousi.cc.

Referenced by analyze(), and EcalLaserAnalyzerYousi().

TFile* EcalLaserAnalyzerYousi::fAPD
private

Definition at line 97 of file EcalLaserAnalyzerYousi.cc.

TH1F* EcalLaserAnalyzerYousi::FitHist
private

Definition at line 92 of file EcalLaserAnalyzerYousi.cc.

Referenced by analyze(), and beginJob().

TFile* EcalLaserAnalyzerYousi::fPN
private

Definition at line 96 of file EcalLaserAnalyzerYousi.cc.

TFile* EcalLaserAnalyzerYousi::fROOT
private

Definition at line 98 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob(), and endJob().

std::string EcalLaserAnalyzerYousi::hitCollection_
private

Definition at line 104 of file EcalLaserAnalyzerYousi.cc.

Referenced by analyze(), and EcalLaserAnalyzerYousi().

std::string EcalLaserAnalyzerYousi::hitProducer_
private

Definition at line 105 of file EcalLaserAnalyzerYousi.cc.

Referenced by analyze(), and EcalLaserAnalyzerYousi().

std::string EcalLaserAnalyzerYousi::outFileName_
private

Definition at line 108 of file EcalLaserAnalyzerYousi.cc.

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

TH1F* EcalLaserAnalyzerYousi::peakAPD[2]
private

Definition at line 75 of file EcalLaserAnalyzerYousi.cc.

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

TH1F* EcalLaserAnalyzerYousi::peakAPDPN[2]
private

Definition at line 76 of file EcalLaserAnalyzerYousi.cc.

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

TH2F* EcalLaserAnalyzerYousi::PN
private

Definition at line 88 of file EcalLaserAnalyzerYousi.cc.

Referenced by beginJob(), and endJob().

std::string EcalLaserAnalyzerYousi::PNdigiCollection_
private

Definition at line 112 of file EcalLaserAnalyzerYousi.cc.

Referenced by analyze(), and EcalLaserAnalyzerYousi().

std::string EcalLaserAnalyzerYousi::Run_
private

Definition at line 110 of file EcalLaserAnalyzerYousi.cc.

Referenced by EcalLaserAnalyzerYousi(), and endJob().

std::string EcalLaserAnalyzerYousi::SM_
private

Definition at line 109 of file EcalLaserAnalyzerYousi.cc.

Referenced by EcalLaserAnalyzerYousi().