forked from bdorney/CMS_GEM_Analysis_Framework
-
Notifications
You must be signed in to change notification settings - Fork 4
/
CHANGELOG.txt
729 lines (626 loc) · 58.3 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
**************************************************
* *
* CHANGELOG: CMS_GEM_Analysis_Framework *
* VERSION: 5.1.0 *
* LAST UPDATE: Aug 29 2017 *
* *
**************************************************
Update: August 29th 2017
==================================================
-> README.md: Edited instructions for genericPlotter helper scripts.
Update: August 25th 2017
==================================================
-> README.md: Rewrite all the instructions section in MarkDown
->Produce_Config_File.py: LatexLines option: Added a check that is not none, added tabs in data printing to improve readability.
-> PlotOptions: Improved the help descriptions
Update: August 21st 2017
==================================================
->Finished re-writting README.md in Markdown
->Added Table of Contents to README.md
-> README.md: Added instructions for Produce_Config_File.py,QC3.py,QC4_*.py and QC5_*.py scripts ( 3.c.iii Analysis of QC data stored in an excel file )
-> QC3.py,QC4_*.py and QC5_*.py: Import PlotOptions instead of Options
Update: August 18th 2017
==================================================
->Further of re-writting README.md in Markdown
Update: August 17th 2017
==================================================
->Added repo structure files showing guidelines for contributing, issue templates, and pull request templates
->Updated .gitignore to be cleaner
->README.txt renamed to README.md
->Started process of re-writting README.md in Markdown
->options.py: Switched from argparse to optparse, add append action to LatexLines option
->Produce_Config_File.py: add loop to print Latexlines from list
-> QC3.py,QC4_*.py,QC5_*.py: append LatexLines to cmd
->options.py: changed YaxisScale, SetErrX, SetErrY and Fit arguments store type (back to boolean)
->Produce_Config_File.py: Changed the if statement for the arguments mentioned above (boolean instead of strings)
->QC3.py: Changed the way the above arguments are appended to cmd
->QC4_*.py: Changed the way the above arguments are appended to cmd
->QC5_*.py: Changed the way the above arguments are appended to cmd
Update: August 16th 2017
==================================================
->scripts/setup_CMS_GEM.sh: add pip2.7 install --user xlrd (library used by produce_config_file.py)
Update: August 15th 2017
==================================================
->Produce_Config_File.py: Added code to fit the plotted data (only when —Fit option is true)
->Produce_Config_File.py and options.py: Changed all bool statements to strings after addressing a problem with bool(args.Fit) argument being true/false when appending to cmd
->options.py: Added arguments to choose the details for the fit
->QC3.py: Added Arguments to perform the Pressure-Time fit if the —Fit option is true
->QC4_HV.py: Added Arguments to perform the Vmon-Imon fit if the —Fit option is true
->wrappers.py: add function envCheck to check that the $GEM_BASE variable has been declared.
->gemlogger.py: removed unnecessary functions and commented lines
Update: August 8th 2017
==================================================
->Merged changes from mmaggi so now unpacker is no longer hard coded to work with only 2 FECs, now FEC numbers 1, 2, or 3 are supported
->Issuing new release (v5.0).
->Updating master branch to release v4.0
Update: July 4th 2017
==================================================
->Scripts runMode_Grid.sh and runMode_Grid_Reco.sh will now stage data in from EOS to the node /tmp directory when analyzing a *dataTree.root file or when reco'ing a *.raw file
->Scripts copy2eos_ROOT.sh and copy2eos_RAW.sh now updated and included in the framework rather than data directory of DAQ machines
Update: July 3rd 2017
==================================================
->Fit Success distribution made by VisualizeUniformity will now have bins centered on integer values
->DetectorMPGD::setEtaSector() no longer incorretly assume there are exactly 3 phi sectors
->Fixed a bug in AnalyzeResponseUniformityHits::initHistosHits() where hit ADC vs ADC Integral distribution for phi distribution did not have correct y axis range
->Fixed a bug in AnalyzeResponseUniformityHits::initHistosHits() where hit ADC vs ADC Integral distribution's TName did not reflect the observables plotted
Update: June 13th 2017
==================================================
->Added InfoPlot::m_strOptionDraw in include/PlotterUtilityTypes.h
->ParameterLoaderPlotter::loadParametersPlot() will now set the plot level draw option
->PlotterGeneric will now produce *.C and *.eps files in addition to *.pdf and *.png
Update: May 17th 2017
==================================================
->Method calcROSectorEff of python class AnalysisSuiteEfficiencyPredictor will now use the average eff to compute errors following binomial description rather than use std. deviation of ponts used to compute the average
->Updated the README.txt
Update: May 11th 2017
==================================================
->Renamed method predictEff of python class AnalysisSuiteEfficiencyPredictor to predictEffHVPt
->Added new method predictEffCurves to python class AnalysisSuiteEfficiencyPredictor, this method will call predictEffHVPt for each input HV Pt
Update: May 4th 2017
==================================================
->Added python class AnalysisSuiteVFATNoise for determining the avg & std. dev noise, pedestal, and threshold in a given (ieta,iphi) sector based on data from P5
->Python class PARAMS_ETASECTOR in Utilities.py will now store a list of boundaries for the iphi sectors
->Python class PARAMS_ETASECTOR has new method calcBoundaries() for determining boundaries for iphi sectors
->Method calcROSectorBoundaries in python class PARAMS_DET will either return the stored list from the PARAMS_ETASECTOR object or calculate the boundaries and then return them
->Python class AnalysisSuiteClusterCharge's method checkIfDataPtInRange will now accept a point that is within 10% of the data to be interpolated
Update: Apr 27th 2017
==================================================
->Attempting to reduce memory by using sloting in python classes
->Attempting to reduce memory by using formating instead of string addition e.g. "{0}_{1}".format(a,b) instead of a + b
Update: Apr 26th 2017
==================================================
->Python class AnalysisSuiteGainMap will now take an outputfilename and an outputfileoption upon initialization
Update: Apr 25th 2017
==================================================
->The calcGainMapHV method of the python class AnalysisSuiteGainMap will now return the TGraph2D object it makes
->New config file config/configEffPredictor.cfg for automatizing efficiency predictor and also calculating gain maps
->New python class AnalysisSuiteEfficiencyPredictor added to python toolkit at python/AnalysisSuiteEfficiencyPredictor.py
Update: Apr 24th 2017
==================================================
->Added methods to AnalysisSuiteClusterCharge for interpolating (using scipy interpolate) cluster charge Mean, MPV, and Sigma data
Update: Apr 21st 2017
==================================================
->Renanmed "GainMapAnalysisSuite" to "AnalysisSuiteGainMap" both the class name and also the *.py file
->Renanmed "ClusterChargeAnalysisSuite" to "AnalysisSuiteClusterCharge" both the class name and also the *.py file
Update: Apr 20th 2017
==================================================
->Moved python classes PARAMS_DET, PARAMS_GAIN, PARAMS_GEO, and PARAMS_PD from GainMapAnalysisSuite.py to Utilities.py
->Renamed python class PARAMS_GEO to PARAMS_ETASECTOR
->Moved methods calcGain, calcGainErr from python class GainMapAnalysisSuite to PARAMS_GAIN
->Moved method calcPD from python class GainMapAnalysisSuite to PARAMS_PD
->Moved method calcROSectorBoundaries from python class GainMapAnalysisSuite to PARAMS_DET
->Moved method rejectOutliers from python class GainMapAnalysisSuite to a standalone function in Utilities.py
Update: Apr 18th 2017
==================================================
->AnalyzeResponseUniformityClusters::initHistosClusters() when intitalizing the number of bins in the cluster position
observable, this method will now automatically account for # of iPhi sector's declared for an Eta Sector in the input
mapping config file (e.g. nbConnect) rather than this being hard-coded
Update: Apr 10th 2017
==================================================
->Class PARAMS_DET in python/GainAnalysisSuite.py will now load the geometry from a mapping configuration file
Update: Apr 7th 2017
==================================================
->Overloaded methods VisualizeUniformity::makeAndStoreCanvasHisto2D() renamed to storeCanvasHisto2D()
Update: Apr 1st 2017
==================================================
->python/GainMapAnalysisSuite.py now also provides plots of a detector's discharge probability
Update: Mar 31th 2017
==================================================
->Plotter classes will now only add an entry to the legend if LegEntry string has a nonzero length
->scripts/setup_CMS_GEM.sh will now setup the computing environment to use python2.7 (installing pip and several packages locally if they are not present)
->Added significant python analysis scripts for computing gain map, gain curves, and discharge prob. maps
->The plot config file will now support logarithmic z-axis
->Fixed a bug in genericPlotter where an if-else if-else statement was not correctly joined
Update: Mar 27th 2017
==================================================
->PlotterGraphErrors::initPlot() gutted to instead call PlotterGraphErrors::getPlot() and store in map object m_map_graphs
->Classes PlotterGraph and PlotterHisto modified to feature one dimensional fitting following the recipe illustrated in PlotterGraphErrors
Update: Mar 24th 2017
==================================================
->PlotterGeneric::drawFit() now has actions done in either PlotterGeneric::performAndDrawFit() and PlotterGeneric::loadAndDrawFit()
->PlotterGeneric::performAndDrawFit() and PlotterGeneric::loadAndDrawFit() are now the methods that should be over-ridden in inherited classes
->Added Overloaded method PlotterGraphErrors::performAndDrawFit() to handle fitting of TGraphErrors objects
->Added method PlotterGraphErrors::getFit() for fitting the exact TGraphError object (get around the multimap usage, less efficient yes...but works)
Update: November 24th 2016
==================================================
->Renamed class QualityControl::Plotter::PlotterGraph to QualityControl::Plotter::PlotterGraphErrors
->Added new class QualityControl::Plotter::PlotterGraph for handling TGraph objects
->QualityControl::Uniformity::VisualizeUniformity will now automatically create a PkPosDataset distribution shifted to 0 ADC in addition to the current version
->Updated README.txt
->Added new GE1/1-IV Mapping file
Update: October 20th 2016
==================================================
->Added new helper script for making all plots from all plot config files in a given directory: scripts/makeAllPlots.sh
Update: October 18th 2016
==================================================
->Added new attribute to QualityControl::Plotter::PlotTypesPlotter called m_strHisto2D set to "TH2F"
->Added new class QualityControl::Plotter::PlotterHisto2D for plotting TH2F objects
->The genericPlotter executable will now recognize TH2F objects
->The QualityControl::Plotter::PlotterGraph::drawPlots() method will now check to make sure the draw option "A" is present, if not it will be added (prevents seg fault)
->Hot fix of release branch!
Update: October 12th 2016
==================================================
->Issuing new release v3.0
Update: October 10th 2016
==================================================
->New class QualityControl::Uniformity::ParameterLoaderFit inheriting from QualityControl::Uniformity::ParameterLoader
->QualityControl::Uniformity::ParameterLoaderAnalysis::loadAnalysisParameters() migrated to new class QualityControl::Uniformity::ParameterLoaderFit
->Added new attribute QualityControl::Uniformity::ParameterLoaderFit fitLoader to QualityControl::Uniformity::ParameterLoaderAnalysis and QualityControl::Plotter::ParameterLoaderPlotter
->Added new struct QualityControl::Plotter::InfoFit for tracking fit parameter attributes.
->Moved fit parameter attibutes from QualityControl::Timing::HistoSetup to QualityControl::Plotter::InfoFit
->Methods in QualityControl::Uniformity::AnalyzeResponseUniformity::getFit(), getParam(), and getParamError() now take a Plotter::InfoFit object instead of a Timing::HistoSetup object
->Added new method QualityControl::Plotter::PlotterGeneric::drawFits() for loading TF1 objects from previous files, can be overwritten by base class members.
Update: October 9th 2016
==================================================
->Implemented functionality for QualityControl::Plotter::PlotterHisto to draw TH1F objects with unit integral
->QualityControl::Plotter::PlotterHisto::m_map_histos changed from std::map to std::multimap to allow TH1F's having the same TName from different TFile's to be plotted
->QualityControl::Plotter::PlotterGraph::m_map_graphs changed from std::map to std::multimap to allow TGraphErrors objects having the same TName from different TFile's to be plotted
->QualityControl::Plotter::InfoCanvas::m_map_infoPlot changed from std::map to std::multimap to allow TObjects having the same TName from different TFile's to be plotted
Update: October 8th 2016
==================================================
->Added two struct's QualityControl::Plotter::PlotColorPaletteRGB and PlotColorPaletteMono in include/PlotterUtilityTypes.h for defining color palette's
->QualityControl::Plotter::PlotterGeneric::setStyle() will now use PlotColorPaletteRGB as the default color palette
->QualityControl::Plotter::PlotterGraph2D::drawPlots() will now use PlotColorPaletteMono for the mono-color palette
->Updated QualityControl::Plotter::drawLatex() to treat the "~" as a space character; when entering Canv_Latex_Line in the plot config file use "~" for spaces.
Update: October 7th 2016
==================================================
->Changed SRSMain::Reprocess() to call SRSMain::Close() when corrupted input is identified; this will exit the run but produce a TTree file for a portion of the events that are good.
->Modified QualityControl::Plotter::ParameterLoaderPlotter::getColLabelPositions() such that it tests for the presence of the col heading rather than requiring an exact match
Update: October 6th 2016
==================================================
->Added new class QualityControl::Plotter::PlotterGraph2D inheriting from PlotterGeneric for making plots of TGraph2D objects
->Added new class QualityControl::Plotter::PlotterHisto inheriting from PlotterGeneric for making plots of TH1F objects
->Added new struct QualityControl::Plotter::PlotTypesPlotter, in include/QualityControlSectionNames.h, for tracking type of TObject for plotter to plot
->Now genericPlotter will understand what type of TObject it should plot
->QualityControl::Plotter::DataPoint now has attributes for z and z_err respectively m_fZ and m_fZ_Err
->Style attributes moved from QualityControl::Plotter::InfoPlot to QualityControl::Plotter::InfoCanvas
->Incorporating timing correction fix in SRSHit from M. Maggi
->Added flag for plotting legend or not in QualityControl::Plotter::PlotterGeneric
->Added additional attributes to QualityControl::Plotter::InfoCanvas to allow for more configuration at runtime
->QualityControl::Plotter::PlotterGraph, PlotterGraph2D, and PlotterHisto updated to take advantage of higher flexibility
->src/analyzeUniformity.cpp has the analysis and reconstruction done in two functions runModeAnalysis() & runModeReconstruction()
->Implemented the reconstruction and analysis mode in src/analyzeUniformity.cpp
->src/analyzeUniformity.cpp renamed to src/frameworkMain.cpp
->Updated printHelpMenu in src/frameworkMain.cpp
Update: October 5th 2016
==================================================
->New make file for genericPlotter executable: MakefilePlotter.clang & MakefilePlotter.gpp
->New config file for use with genericPlotter executable: config/configPlot.cfg
->Adding new utility functions for the QualityControl::Plotter namespace found in include/PlotterUtilityFunctions.h & src/PlotterUtilityFunctions.cpp
->New utility function QualityControl::Plotter::conver2Color
->New int main() for generic executable found in src/genericPlotter.cpp
->QualityControl::Plotter::ParameterLoaderPlotter class implemented and tested
->Added new class QualityControl::Plotter::PlotterGeneric for making plots
->Added new class QualityControl::Plotter::PlotterGraph inheriting from PlotterGeneric for making plots of TGraphError objects
Update: October 4th 2016
==================================================
->Adding event unpacking/decoding and reconstruction classes from amoreSRS
->The Run Config file field of "Ana_Reco_Clusters" is renamed to "Reco_All"
->QualityControl::Uniformity::RunSetup::bAnaStep_Reco renamed to bRecoStep_All
->Minor bug fixes to SRSMapping methods: GetPlaneOrientation(), GetNbOfAPVs(), GetSizeOfPlane(), and GetPlaneIDorEtaSector()
->Minor bug fixes to SRSOutputROOT::WriteRootFile() and SRSOutputROOT::InitRootFile()
->Renamed QualityControl::Uniformity::ParameterLoaderAmoreSRS to ParameterLoaderDetector
->Added new struct QualityControl::Uniformity::RunModes to include/QualityControlSectionNames.h
->QualityControlUniformity::ParameterLoaderRun now determines the possible running modes {Ana, Comp, Reco, RecoPlusAna} and stores them using RunModes
->SRSOutputROOT will no longer create a TBranch called etaSector in either THit or TCluster
->SRSOutputROOT will now store the planeID TBranch as type float in both THit and TCluster
->Standalone reconstruction mode is now implemented
Update: October 3rd 2016
==================================================
->Added new file include/QualityControlSectionNames.h for providing a single point of access for config file name headers
->Added new file include/PlotterUtilityTypes.h for defining plotting struct's DataPoint, InfoPlot, and InfoCanvas in the QualityControl::Plotter namespace
Update: September 30th 2016
==================================================
->Changed QualityControl::Uniformity::DetectorMPGD::setHit() & setCluster() to be compatible with both positive and negative iEta sector y-positions
Update: September 28th 2016
==================================================
->Added to QualityControl::Uniformity::HistoPhysObj a new TH2F called hSize_v_Pos
->QualityControl::Uniformity::AnalyzeResponseUniformityClusters will now initialize, fill, store, and load the hSize_v_Pos object mentioned above
Update: September 17th 2016
==================================================
->Updated README.txt
->Issuing release_v2.2
Update: September 16th 2016
==================================================
->Fixed a bug that was causing the slice i to be taking data from slice (i+1)
->Fixed a bug where the Segmented histograms were always being drawn with the last ieta/iphi sector in all pads
Update: September 11th 2016
==================================================
->Honor their memory
->Added new class QualityControl::Uniformity::VisualizeComparison for making comparison plots across different framework output files
->Added new class QualityControl::Uniformity::ParameterLoaderComparison for setting necessary inputs in the QualityControl::Uniformity::RunSetp struct
->QualityControl::Uniformity::VisualizeComparison inherits from QualityControl::Uniformity::Visualizer
->Public method QualityControl::Uniformity::ParameterLoaderRun::loadParametersRun() renamed to loadParameters()
->QualityControl::Uniformity::ParameterLoaderRun has two new private methods loadParametersRun() & loadParametersCompare() for setting up different run modes
->Updated QualityControl::Uniformity::RunSetup to have additional data members for setting up VisualizeComparison
Update: September 10th 2016
==================================================
->Added QualityControl::Timing::HistoSetup::fHisto_BinWidth for storing bin width of histograms
->QualityControl::Uniformity::ParameterLoaderAnalysis::loadAnalysisParametersHistograms() will calculate the histogram bin width for each HistoSetup identified
->Adding overloaded method QualityControl::Uniformity::AnalyzeResponseUniformity::isQualityFit() for accepting/rejecting a fit
->QualityControl::Uniformity::AnalyzeResponseUniformityClusters::fitHistos() will now only attempt a fit if the histogram integral is non-zero in the fit range
->QualityControl::Uniformity::AnalyzeResponseUniformityClusters::fitHistos() will only accept fits that have TFitResultsPtr::IsValid() and the peak parameter must not be: zero, within 0.1% of the limits, or having a percent error > 10%
->Added data member QualityControl::Uniformity::ReadoutSectorPhi::fNFitSuccess for tracking number of successful slice fits per sector
->Added private method QualityControl::Uniformity::VisualizeUniformity::getCanvasSliceFit() for making a canvas of the slice histo & fit
->Added overloaded method QualityControl::Uniformity::VisualizeUniformity::storeCanvasFits() for calling getCanvasSliceFit() for all slices and making a summary of the success rate of fitting
->QualityControl::Uniformity::InterfaceAnalysis::storeResults() will now call VisualizeUniformity::storeCanvasFits()
->QualityControl::Uniformity::AnalyzeResponseUniformity::calcStatistics() will no longer attempt to discard "outliers" when determining uniformity
->Fixed a bug in series & re-run mode in which the clusters in each slice were being over-counted progressively as number of input files increased
->QualityControl::Uniformity::AnalyzeResponseUniformityClusters::fitHistos() will now also create the slice histograms
->QualityControl::Uniformity::VisualizeUniformity now inherits from QualityControl::Uniformity::Visualizer, future functionality foreseen
->All QualityControl::Uniformity::ParameterLoaderX classes now inherit from QualityControl::Uniformity::ParameterLoader, future functionality foreseen
Update: September 9th 2016
==================================================
->Dataset distributions will now display the normalized chi^2 value of the fit applied to the dataset
->Dataset distributions will now display the error on the mean, sigma, and percent error of the dataset
Update: September 5th 2016
==================================================
->QualityControl::Uniformity::AnalyzeResponseUniformityClusters will now fill and store a run history for the cluster time vs. evt number
->Added new private method QualityControl::Uniformity::VisualizeUniformity::getMapObsHisto2D for selecting() the run history distribution of interest (e.g. ADC vs. Evt Num for all runs)
->Added new private method QualityControl::Uniformity::VisualizeUniformity::getSummarizedRunHistoryHisto2D() for transforming obs vs. evt number to obs vs. run number
->Renamed QualityControl::Uniformity::VisualizeUniformity::storeCanvasHisto2D() to QualityControl::Uniformity::VisualizeUniformity::makeAndStoreCanvasHisto2D()
->Added new method QualityControl::Uniformity::VisualizeUniformity::storeCanvasHisto2DHistorySegmented() for storing run history plots segmented by Eta or Phi
->Added new private methods QualityControl::Uniformity::VisualizeUniformity::getPadEta() and QualityControl::Uniformity::VisualizeUniformity::getPadPhi()
Update: September 2nd 2016
==================================================
->struct's SectorEta & SectorPhi (in QualityControl::Uniformity) being converted into classes ReadoutSectorEta & ReadoutSectorPhi which inherit from ReadoutSector (in QualityControl::Uniformity)
->Updated Makefile.clang & Makefile.gpp to compile new classes: ReadoutSector, ReadoutSectorPhi, and ReadoutSectorEta
->QualityControl::Uniformity::VisualizeUniformity::getObsX() methods, for X={Data,Histo} being changed to take a ReadoutSector object as input instead of a ReadoutSectorEta object
Update: August 31 2016
==================================================
->Fixed a bug where fitting in QualityControl::Uniformity::AnalyzeResponseUniformityClusters::fitHistos() could be performed on a histogram with 0 entries thus leading to a seg fault with a null TFitResultPtr being returned.
->Fitting done in QualityControl::Uniformity::AnalyzeResponseUniformityClusters::fitHistos() will only consider slice histograms that are not null pointers themselves, and with at least 1 entry
->Changed int main() in src/analyzeUniformity.cpp to exit if no input files are found rather than continue and crash (due to no valid input...)
Update: August 26 2016
==================================================
->Updated default GE1/1-VII-L & GE1/1-VII-S mapping again, now origin is in center of detector's local coordinate (matches DPG)
Update: August 24 2016
==================================================
->Removed AnalysisSetupUniformity::fUniformityTolerance and all associated functionality
Update: August 23 2016
==================================================
->Added method AnalyzeResponseUniformityHits::findDeadStrips(), produces a text file including tabular data of dead strips in eta/phi
->Added function QualityControl::Uniformity::getPhiStripNum() for converting strip number in iEta row to iPhi sector
->Added function QualityControl::Uniformity::getPhiSectorVal() for determining which phi sector an iEta strip is in
->Added overloaded function QualityControl::Timing::printStreamStatus() for dealing with std::fstream objects
->Changed InterfaceAnalysis::storeResults to take 2 arguments, the second being the file name of the input TFile
->InterfaceAnalysis::storeResults will now call AnalyzeResponseUniformityHits::findDeadStrips()
Update: August 19th 2016
==================================================
->Fixed an error in VisualizeUniformity where iphi was drawn in the wrong order on the summary canvases
Update: August 18th 2016
==================================================
->Changed the mapping files, config/Mapping_GE11-VII-S.cfg and config/Mapping_GE11-VII-L.cfg, to have the width & height matching the CMS Geometry
->Note the CMS Geometry for GE1/1 is found in table 2 of https://twiki.cern.ch/twiki/bin/viewauth/CMS/GEMGeometryStatusNew#GE_1_1_Global_Position
Update: July 7th 2016
==================================================
->Removed InterfaceRun workflow, class still exists but is no longer used
->Added std::map<int, std::shared_ptr<TH2F> > map_hADC_v_EvtNum_by_Run to QualityControl::Uniformity::HistosPhysObj; here key is a run number and the value is the histogram
Update: July 6th 2016
==================================================
->Performance is abysmal in this new mode. Trying to improve.
->Changed fillHistos(), fitHistos(), initGraphClusters(), initHistosClusters(), storeHistos() and storeFits() in QualityControl::Uniformity::AnalyzeResponseUniformityClusters to take as input a DetectorMPGD object by reference and work with this object instead of the stored DetectorMPGD class attribute inherited from FrameworkBase.
->Changed QualityControl::Uniformity::SectorPhi::vec_clusters and vec_hits to std::multimap<int,Cluster> and std::multimap<int,Hit>, respectively. Here the key value is the event number
->Changed DetectorMPGD get/set methods to work mostly with std::multimap<int, X> for X = {Cluster, Hit} instead of with std::vector<X>
->Changed fillHistos(), fitHistos(), initGraphClusters(), initHistosClusters(), storeHistos() and storeFits() in QualityControl::Uniformity::AnalyzeResponseUniformityHits to take as input a DetectorMPGD object by reference and work with this object instead of the stored DetectorMPGD class attribute inherited from FrameworkBase.
->QualityControl::Uniformity::VisualizeUniformity::getObsHisto() may now also return multiplicity histograms
->QualityControl::Uniformity::InterfaceAnalysis::storeResults() will now produce segmented multiplicity plots for hits and clusters
->Added method QualityControl::Uniformity::ParameterLoaderRun::getRunNumber() for determining the run number from an input filename
->Added method QualityControl::Uniformity::ParameterLoaderRun::getPairedRunList() for determing the requested input runs paired to a run number
Update: July 5th 2016
==================================================
->Added overloaded method Uniformity::SelectorCluster::filterClusters() for filtering an input vector<Cluster> based on selection criterion stored in the stored/provided Uniformity::AnalysisSetupUniformity
->Added overloaded method Uniformity::SelectorHit::filterHits() for filtering an input vector<Hit> based on selection criterion stored in the stored/provided Uniformity::AnalysisSetupUniformity
->Added smart pointers hMulti_Clust & hMulti_Hit to DetectorMPGD; these serve as summary plots showing the hit & cluster multiplicity per event over the entire detector
->Uniformity::AnalyzeResponseUniformityClusters::initHistosClusters() will now initialize detMPGD.hMulti_Clust
->Uniformity::AnalyzeResponseUniformityHits::initHistosHits() will now initialize detMPGD.hMulti_Hit
->Added attribute Timing::HistoSetup histoSetup_hitMulti to Uniformity::AnalysisSetupUniformity
->Uniformity::ParameterLoaderAnalysis::loadAnalysisParametersHistograms() will now also load a Timing::HistoSetup object for hit multiplicity
->Default config/configAnalysis.cfg now has a histogram field for hit multiplicity
->Added method Uniformity::DetectorMPGD::SetEvent() for taking an input event, filling event level distributions, and then setting the Physics Objects in the detector
->Added function Uniformity::getEventRange() in include/UniformityUtilityFunctions.h
->Uniformity::SelectorCluster::setClusters() now uses Uniformity::getEventRange() to determine event range
->Uniformity::SelectorCluster::clusterPassesSelection() changed to public
->Uniformity::SelectorHit::setHits() now uses Uniformity::getEventRange() to determine event range
->Uniformity::SelectorHit::hitPassesSelection() changed to public
->Added method Uniformity::InterfaceAnalysis::initialize() for initializing all stored classes, histograms, graphs, etc...
->The Uniformity & Timing namespaces have been moved inside the QualityControl namespace
->Added new class QualityControl::Uniformity::FrameworkBase
->QualityControl::Uniformity::Selector, QualityControl::Uniformity::AnalyzeResponseUniformity, QualityControl::Uniformity::Interface now inherit from QualityControl::Uniformity::FrameworkBase
->The setDetector, getDetector, setAnalysisParameter, setVerboseMode methods have all been moved from all other classes to QualityControl::Uniformity::FrameworkBase
->Added new class QualityControl::Uniformity::Interface from which QualityControl::Uniformity::InterfaceAnalysis inherits
->Makefile.clang and Makefile.gpp will now compile additional classes
Update: July 4th 2016
==================================================
->Adding event struct to include/UniformityUtilityTypes.h
Update: July 3rd 2016
==================================================
->Updates to README.txt
->White space and depreciated commented items clean-up on include/AnalyzeResponseUniformity.h and src/AnalyzeResponseUniformity.cpp
->Changed AnalyzeResponseUniformity::calcStatistics() to take 3 arguments instead of 2, e.g. calcStatistics(Uniformity::SummaryStatistics &inputStatObs, std::multiset<float> &mset_fInputObs, std::string strObsName);
->AnalyzeResponseUniformity::calcStatistics() will now fill inputStatObs::hDist from the input mset_fInputObs
->Removed mset_fClustADC_Fit_PkPos, mset_fClustADC_Spec_PkPos, statClustADC_Fit_PkPos, and statClustADC_Spec_PkPos attributes from Uniformity::SectorEta
->Added attribute fitDist to Uniformity::SummaryStatistics
->Added method Uniformity::SummaryStatistics::clear() for wiping stored data (numbers set to -1, stl containers cleared, pointers deleted)
->Added private attributes mset_fClustADC_Fit_PkPos, mset_fClustADC_Fit_PkRes, statClustADC_Fit_PkPos, and statClustADC_Fit_PkRes to Uniformity::DetectorMPGD; these represent the sum over the PkPos & PkRes observables over all stored SectorEta objects
->Added method DetectorMPGD::resetResults() for clearing mset_fClustADC_Fit_PkPos, mset_fClustADC_Fit_PkRes, statClustADC_Fit_PkPos, and statClustADC_Fit_PkRes
->Added method DetectorMPGD::reset() now also clears mset_fClustADC_Fit_PkPos, mset_fClustADC_Fit_PkRes, statClustADC_Fit_PkPos, and statClustADC_Fit_PkRes
->Added method DetectorMPGD::getStatPkPos() and DetectorMPGD::getStatPkRes() for accessing private attributes statClustADC_Fit_PkPos, and statClustADC_Fit_PkRes
->VisualizeUniformity::storeCanvasData will no longer create a TH1F or TF1 for the requested strObsName; nor perform the fitting. Instead this is done in AnalyzeResponseUniformity::calcStatistics()
->VisualizeUniformity::storeCanvasData still makes the same TCanvas as before, now stores the TF1 in addition to the TH1F stored on this TCanvas
->InterfaceAnalysis will now make dataset distributions for both PkPos and PkRes (before was only PkPos)
Update: June 30th 2016
==================================================
->Updates to README.txt
->Updated configRun_Template_Rerun.cfg files to have the "Detector_Name" name field by default
->Adding config/Mapping_GE11-VII-L.cfg and config/Mapping_GE11-VII-S.cfg to the repository to serve as the geometry for the long and short generation VII detectors, respectively.
Update: June 28th 2016
==================================================
->Added functionality for energy resolution to be determined when the user has given the "SIGMA" meaning to a parameter instead of FWHM (gaussian relation used)
->Overloaded Uniformity::ceilPowerTen() in include/UniformityFunctions.h to increment by scalar multiples of powers of 10; also just powers of 10 still avaliable
->Segmented summary TCanvas objects prepared by Uniformity::VisualizeUniformity::storeCanvasHistoSegmented() no longer use Uniformity::ceilPowerTen() to set the Y-axis range.
->Changed Uniformity::divides in include/UniformityUtilityOperators.h to only divide the third element of a tuple; this fixes a bug where the normalized trapezoidal maps X & Y axis were also modified (in addition to the z-axis values)
->Added private Uniformity::VisualizeUniformity::getObsData() for returning a vector whose elements are the value of an inout strObsName from an input Uniformity::SectorEta
->Added overloaded method Uniformity::VisualizeUniformity::storeCanvasData() for plotting an input strObsName as a histogram and saving the canvas
->Uniformity::InterfaceAnalysis::storeResults() now calls VisualizeUniformity::storeCanvasData() for strObsName = "ResponseFitPkPos"
->Uniformity::VisualizeUniformity::getObsX for X = {Data, Graph, Histo} changed such that input strObsName is no longer passed by reference (since there is a conversion toupper that is sometimes not desired elsehwere)
Update: June 23rd 2016
==================================================
->Tweaking Uniformity::VisualizeUniformity::storeCanvasHisto2D() such that the produced trapezoidal map defaults to "top view"
->However TCanvas::SetTheta() and TCanvas::SetPhi() don't seem to be working correctly in the code but only in the ROOT environment
Update: June 22nd 2016
==================================================
->Added method Uniformity::VisualizeUniformity::save2png() for saving produced TCanvas objects to *.png files
->Added new data member Uniformity::RunSetup::bVisPlots_AutoSaving for user to toggle call to VisualizeUniformity::save2png() on/off
->Updated Uniformity::ParameterLoaderRun::loadRunParameters() to search for field Visualize_AutoSaveImages to set RunSetup::bVisPlots_AutoSaving with
->Updated config/configRun.cfg, config/configRun_Template_Rerun.cfg, and config/configRun_Template_Series.cfg to have the Visualize_AutoSaveImages present
Update: June 21st 2016
==================================================
->Changed Uniformity::VisualizeUniformity::storeCanvasGraph2D from 3 arguments to 4 arguments; last argument is a boolean which allows user to choose to normalize the output (normalization to average of the obserable)
->Added templated operator: template<typename T1, typename T2, typename T3>std::tuple<T1, T2, T3> operator+ to include/UniformityUtilityOperators.h
->Added BinaryOperation Uniformity::addTuple which makes use of new tuple addition operator and can be used by stl algorithms (e.g. std::accumulate) in include/UniformityUtilityFunctions.h (implemented in src//UniformityUtilityFunctions.cpp )
->Added UnaryPredicate Uniformity::divides for tuple scalar division to include/UniformityUtilityOperators.h
->Added functionality in Uniformity::VisualizeUniformity::storeCanvasGraph2D to produce a normalized plot (to the observable average) in addition to standard plot
->Updated Uniformity::InterfaceAnalysis::storeResults() to create both the regular and normalized 3D plots for the requested observables
Update: May 23rd 2016
==================================================
->Renaming Uniformity::AnalyzeResponseUniformity::getFitBoundary() to getParsedInput() since this method is not explicit to the fit boundary but has multiple use cases
->Fixed a bug where Uniformity::AnalyzeResponseUniformity::getFit() was not properly setting the intial guess of a fit for the case where the user enters a complex expression
->Fixed a bug which was causing a crash in re-run mode Uniformity::AnalyzeResponseUniformity::loadHistosFromFile was not loading the SectorEta(Phi)::clustHistos::hADC_v_Time cause a seg fault due to nullptr later on
->Fixed a bug in config/configRun_Template_Rerun.cfg which was causing the framework to attempt to load histograms corresponding to hits during rerun mode and was causing a segmentation fault
Update: May 20th 2016
==================================================
->Bug fix implemented in Uniformity::SelectorHit::setHits(); all hits in an event were incorrectly being assigned the ADC values of the 1st hit in the event. A terrible hack has been implemented to resolve this...hopefully an elegant solution can be found... Many thanks to M. Maggi for catching this!!!
->Added short type data member Uniformity::Hit::sADCIntegral to Hit struct to represent the integral of the ADC values
->Uniformity::SelectorHit::setHits now loads ADC of all time bins not just user requested window;
->Uniformity::SelectorHit::setHits now integrates ADC from all time bins and sets value to Uniformity::Hit::sADCIntegral;
->Added new histogram Uniformity::HistosPhysObj::hADCMax_v_ADCInt for tracking peak ADC value (in time) vs. intergarl of adc values (in time) to identify saturated hits
->Uniformity::AnalyzeResponseUniformityHits() now initializes, fills, and stores SectorEta(Phi)::hitHistos::hADCMax_v_ADCInt
Update: May 19th 2016
==================================================
->Observed a few cases where the normalized chi^2 (normchi2) value of a slice fit was INF or NaN, now code checks for this and sets normchi2 = -1 if this occurs. This ensures the normchi2 distribution can always be drawn in ROOT.
->Added new utility function Uniformity::ceilPowerTen for recursively determining the smallest power of 10 larger than an input variable
->Uniformity::VisualizeUniformity::storeCanvasHistoSegmented() will now create a TCanvas where the y-axis is the same for every pad using the range [1e-1, Uniformity::ceilPowerTen]
->Fixed a bug where Uniformity::InterfaceAnalysis::analyzeInputFrmwrk() was not initializing the TGraphError objects used in a cluster fitting
->Fixed two bugs in config/configRun_Template_Rerun.cfg and config/configRun_Template_Series.cfg
->Added data member Uniformity::HistosPhysObj::hADC_v_Time showing ADC vs time bin for an input physics object
->Uniformity::AnalyzeResponseUniformityClusters::initHistosClusters() now initializes SectorEta(Phi)::clustHistos::hADC_v_Time
->Uniformity::AnalyzeResponseUniformityClusters::fillHistos() now fills SectorEta(Phi)::clustHistos::hADC_v_Time
->Uniformity::AnalyzeResponseUniformityClusters::storeHistos() now writes SectorEta(Phi)::clustHistos::hADC_v_Time to output TFile
Update: May 18th 2016
==================================================
->Fixed a bug where the copy ctor and assignment operators of Uniformity::DetectorMPGD were not correctly setting the strDetName and strDetNameNoSpecChar data members
->Updated config/configRun_Template_Series.cfg and scripts/runMode_Series.sh to take a detector name as user input
->Changed Uniformity::AnalyzeResponseUniformity::vec_strSupportedKeywords to also include "FWHM" and "HWHM"
->Changing Uniformity::AnalyzeResponseUniformity::getValByKeyword() to try provide an initial fit guess for the (HWHM) FWHM based on (1/2) the rms of the input histogram
->Changing Uniformity::AnalyzeResponseUniformity::getPeakPos() and getPeakPosError() to getParam() and getParamError() for any input string to be compared with AnalyzeResponseUniformity::vec_strSupportedKeywords
->Adding method Uniformity::AnalyzerResponseUniformityClusters::initGraphsClusters() for initializing TGraph objects (and inherited objects) used in the cluster analysis
->Uniformity::InterfaceAnalysis now calls AnalyzerResponseUniformityClusters::initGraphsClusters()
->Added shared_ptr<TGraphErrors> data member Uniformity::SectorEta::gEta_ClustADC_Fit_PkRes for storing peak resolution
->The Peak resolution (PkWidth / PkPos) is now calculated by Uniformity::AnalyzerResponseUniformityClusters::fitHistos()
->Uniformity::VisualizeUniformity::getObsGraph now supports getting Uniformity::SectorEta::gEta_ClustADC_Fit_PkRes
->Summary TCanvas objects are now prepared in Uniformity::InterfaceAnalysis::storeResults()
->Fixed a bug where the computing environment was not set correctly for the "hadd" command in root
->Added two new template files config/configRun_Template_Grid.cfg and config/config_Template_Rerun.cfg for run modes Grid and Rerun (see README.txt)
->Added two new run mode scripts at scripts/runMode_Grid.sh and scripts/runMode_Rerun.sh for Grid and Rerun modes, respectively (see README.txt)
->Added one script for cleaning up Grid mode output at scripts/cleanGridFiles.sh
->Fixed a bug in Uniformity::AnalyzeResponseUniformity::getHistogram2D() in which the TName of the output TH2F was not set correctly and causing AnalyzeResponseUniformityClusters::loadHistosFromFile() to seg fault
Update: May 17th 2016
==================================================
->Disabled Uniformity::VisualizeUniformity::storeCanvasHisto2D() for now, doesn't seem to draw the detector properly
->Run config file now asks the user for which detector they are processing. The detector name is now included in the TName's of all TCanvas objects in the output TFile.
->Added data member for storing detector name in Uniformity::RunSetup called strDetName
->Added data members and methods to Uniformity::DetectorMPGD for detector name (DetectorMPGD::strDetName), getting the name ( DetectorMPGD::getName(), DetectorMPGF::getNameNoSpecial() ), and setting the name ( DetectorMPGD::setName() )
->Added method AnalyzeResponseUniformity::getHistogram2D(), now 2D histograms that plot 1D observables defined by the user will follow user input for parameters (e.g. binning, names, etc...);
->Fixed a bug where the number of bins in the cluster position histogram (or axis representing this in 2D histograms) was not following the requested granularity of the user
->Fixed a bug where Uniformity::DetectorMPGD::strDetName and strDetNameNoSpecChar were not copied on assignment
Update: May 13th 2016
==================================================
->Added method Uniformity::VisualizeUniformity::storeCanvasGraph2D() for making 2D plots from TGraph's of each SectorEta in DetectorMPGD
->Uniformity::InterfaceAnalysis::storeResults() now calls VisualizeUniformity::storeCanvasGraph2D()
->Added method Uniformity::VisualizeUniformity::storeCanvasHisto2D() for making 2D plots from TGraph's of each SectorEta in DetectorMPGD
Update: May 10th 2016
==================================================
->Added a template run config file for running in "series mode" found in: config/configRun_Template_Series.cfg
->Added a script to automatically configure a "series mode" run using the above template file for a list of input files found in a given directory, script found in scripts/runMode_Series.sh
->Updated the mapping configuration file to the reflect the updated, and hopefully correct, APV-to-FEC mapping: config/GE7MappingCMScernData2016_v2.cfg
Update: May 6th 2016
==================================================
->Added new data member to Uniformity::HistosPhysObj called std::shared_ptr<TH2F> hADC_v_Size; also added to list of objects which undergo a deep copy.
->Uniformity::AnalyzeResponseUniformityClusters::fillHistos now filles HistosPhysObj.hADC_v_Size for clusters at both SectorEta and SectorPhi level
->Uniformity::AnalyzeResponseUniformityClusters::loadHistosFromFile now filles HistosPhysObj.hADC_v_Size for clusters at both SectorEta and SectorPhi level
->Uniformity::AnalyzeResponseUniformityClusters::storeFits( string & strOutputROOTFileName, ... ) now just calls AnalyzeResponseUniformityClusters::storeFits( TFile * file_InputRootFile) instead of duplicating the method
->Uniformity::AnalyzeResponseUniformityClusters::storeHistos( string & strOutputROOTFileName, ... ) now just calls AnalyzeResponseUniformityClusters::storeHistos( TFile * file_InputRootFile) instead of duplicating the method
->Uniformity::AnalyzeResponseUniformityHits::storeHistos( string & strOutputROOTFileName, ... ) now just calls AnalyzeResponseUniformityClusters::storeHistos( TFile * file_InputRootFile) instead of duplicating the method
->Uniformity::SelectorCluster::setClusters(std::string &strInputRootFileName, ... ) now just calls SelectorCluster::setClusters(TFile * file_InputRootFile, ... ) instead of duplicating the method
->Uniformity::SelectorHit::setHits(std::string &strInputRootFileName, ... ) now just calls SelectorHit::setHits(TFile * file_InputRootFile, ... ) instead of duplicating the method
->Uniformity::VisualizeUniformity::storeCanvasGraph(std::string & strOutputROOTFileName, ... ) now just calls VisualizeUniformity::storeCanvasGraph(TFile * file_InputRootFile, ... ) instead of duplicating the method
->Uniformity::VisualizeUniformity::storeCanvasHisto(std::string & strOutputROOTFileName, ... ) now just calls VisualizeUniformity::storeCanvasHisto(TFile * file_InputRootFile, ... ) instead of duplicating the method
->Uniformity::VisualizeUniformity::storeCanvasHistoSegmented(std::string & strOutputROOTFileName, ... ) now just calls VisualizeUniformity::storeCanvasHistoSegmented(TFile * file_InputRootFile, ... ) instead of duplicating the method
Update: May 5th 2016
==================================================
->Updated README.txt file to reflect changes
->Merged feature_UpdatedExec into develop
Update: May 4th 2016
==================================================
->Uniformity::InterfaceAnalysis methods for running analysis on TFile's created by amoreSRS have been implemented
->Uniformity::InterfaceAnalysis methods for running analysis on TFile's created by CMS_GEM_Analysis_Framework have been implemented
->AnalyzeResponseUniformityClusters::loadHistosFromFile() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->Updating src/analyzeUniformity.cpp to use InterfaceAnalysis and ParameterLoaderRun
->RunSetup struct now has a flag for if the struct was set correctly
->ParameterLoaderRun::getRunParameters now takes an input std::ifstream instead of a std::string
->Updated Makefile.clang and Makefile.gpp to compile InterfaceAnalysis and ParameterLoaderRun
->AnalyzeResponseUniformityClusters::loadHistosFromFile() methods have been updated to load all histograms, not just those involved in fitting
->Corrected an improper naming convention in AnalyzeResponseUniformityClusters, rare instances of "hiEta" changed to "h_iEta" in TH1 & TH2 TName fields.
->May the force by with you.
Update: May 3rd 2016
==================================================
->HitSelector::setHits() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->ClusterSelector::setClusters() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->AnalyzeResponseUniformityHits::storeHistos() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->AnalyzeResponseUniformityClusters::storeHistos() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->AnalyzeResponseUniformityClusters::storeFits() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->VisualizeUniformity::storeCanvasGraph() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->VisualizeUniformity::storeCanvasHisto() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->VisualizeUniformity::storeCanvasHistoSegmented() has been overloaded to either take a std::string (storing the physical filename) or an open TFile * object
->VisualizeUniformity has three new sets of overloaded methods called storeListOfCanvasesGraph, storeListOfCanvasesHisto, and storeListOfCanvasesHistoSegmented which either take a std::string (storing the physical filename) or an open TFile * object and a map<string,string> of observable (key) and draw option (value) to make the summary plots for
->VisualizeUniformity::storeCanvasHisto(std::string & strOutputROOTFileName, std::string strOption, std::vector<std::string> vec_strObsName, std::string strDrawOption, bool bShowPhiSegmentation) is depreciated, instead use VisualizeUniformity::storeListOfCanvasesHisto( ... )
->Added new class Uniformity::ParameterLoaderRun for loading the RunSetup struct and determining the input file list
->Moved the RunSetup struct from src/analyzeUniformity.cpp to include/UniformityUtilityTypes.h
->Added new class Uniformity::InterfaceAnalysis for being the single access point for the analysis
Update: Apr 30th 2016
==================================================
->DetectorMPGD has three new methods resetClusters, resetHits, and resetPhysObj
->DetectorMPGD::resetClusters clears all stored clusters, but leaves all other data members (e.g. geometry, histograms, etc...) intact
->DetectorMPGD::resetHits clears all stored hits, but leaves all other data members (e.g. geometry, histograms, etc...) intact
->DetectorMPGD::resetPhysObj clears all stored clusters and hits, but leaves all other data members (e.g. geometry, histograms, etc...) intact
->AnalyzeUniformityClusters has new method initHistosClusters
->This method will initialize all histograms once, before looping through input clusters
->Changed the way the slice histograms in AnalyzeUniformityClusters were made, now they will properly reflcet the aggregate of a multi run analysis (instead of being overwritten for each new run);
->AnalyzeUniformityHits has new method initHistosHits
->This method will initialize all histograms once, before looping through input hits
->Fixed a bug in AnalyzeUniformityHits where the number of bins of hit position histogram did not equal the number of strips
->Reduced message spam to terminal from all classes
->Uniformity::Cluster now has a placeholder data member map_hits to represent the hits used to reconstruct this cluster. Placeholder for now; will be null.
Update: Apr 29th 2016
==================================================
->New configuration file template exists referred to as the Run Config: config/configRun.cfg
->analyzeUniformity Executable now takes a two argumenta, the run config file to be used and a true/false verbose mode flag
->analyzeUniformity can now read in multiple input files
Update: Apr 27th 2016
==================================================
->Updating README file
->Merging a first version of feature_VisualizeUniformity into the develop branch
Update: Apr 26th 2016
==================================================
->Fixed crash where invalid histogram pointer in Uniformity::VisualizeUniformity was causing a seg fault, need to use Uniformity::AnalyzeResponseUniformity::getDetector() in executable
->Added copy constructor and assignment operator to Uniformity::DetectorMPGD
->Implemented method for Uniformity::VisualizeUniformity in which a TCanvas is drawn with a physics observable drawn on a unique pad for each SectorEta
->Implemented method for Uniformity::VisualizeUniformity in which a TCanvas is drawn with all physics observables drawn on the same for each SectorEta
Update: Apr 25th 2016
==================================================
->Added copy constructor and assignment operator to Uniformity::HistosPhysObj
->Added copy constructor and assignment operator to Uniformity::SummaryStatistics
->Added copy constructor and assignment operator to Uniformity::SectorSlice
->Added copy constructor and assignment operator to Uniformity::SectorPhi
->Added copy constructor and assignment operator to Uniformity::SectorEta
Update: Apr 24th 2016
==================================================
->Added new class Uniformity::VisualizeUniformity which inherits from Uniformity::AnalyzeResponseUniformity
->Class Uniformity::VisualizeUniformity makes a TCanvas for an input observable, the TCanvas has one pad for each SectorEta, the observable is drawn on the TCanvas
Update: Apr 22th 2016
==================================================
->Removing AnalysisCode.cpp, AnalysisCodeGE6_V1_fast_cl.cpp, AnalysisCodeGE6_V2.cpp, AnalysisCode_GE4_V1.cpp, and AnalysisCode_GE6_V1.cpp from repo
->Removing Makefile_SingleSpecAna.clang and Makefile_SingleSpecAna.gpp from repo
->Removing src/SingleSpectrumAnalyzer.cpp from repo
->AnalyzeResponseUniformityClusters will now store a "Summary" set of of histograms (sum of all SectorEta) when AnalyzeResponseUniformityClusters::StoreHistos is called
->AnalyzeResponseUniformityHits will now store a "Summary" set of of histograms (sum of all SectorEta) when AnalyzeResponseUniformityHits::StoreHistos is called
Update: Apr 11th 2016
==================================================
->Adding functionality for "hitADC" histogram to be created in the analysis
->Implemented vector for storing hit ADC values in Uniformity::Hit (e.g. Uniformity::Hit::vec_fADC )
->Implemented cut for saturated hit ADC values in Uniformity::SelParam (e.g. Uniformity::SelParam::iCut_ADCSat)
->Uniformity::ParameterLoaderAnalysis will now take a user input for the minimum ADC value for hits and the maximum ADC value for hits
->Uniformity::ParameterLoaderAnalysis will now check to see if the cut on the min hit time is >= 0; if not it will be reset to 0
->Uniformity::ParameterLoaderAnalysis will now check to see if the cut on the max hit time is <= 29; if not it will be reset to 29
->Uniformity::SelectorHit will now load and cut on hit ADC values
Update: Mar 15th 2016
==================================================
->Changing name of Uniformity::ClusterSelector to Uniformity::SelectorCluster
->Changing name of Uniformity::HitSelector to Uniformity::SelectorHit
Update: Mar 14th 2016
==================================================
->Re-naming the SelParamClusters struct in include/UniformityUtilityTypes.h to SelParam
->SelParam struct is now used for both Cluster and Hit selection
->Added in Uniformity::SectorPhi two data members to track minimum and maximum strip number
->Adding functionality to set Hit Selection criteria in Uniformity::ParameterLoaderAnalysis
->Renaming Uniformity::AnalyzeResponseUniformity to Uniformity::AnalyzeResponseUniformityClusters
->Adding new generic analysis class called Uniformity::AnalyzeResponseUniformity
->Uniformity::AnalyzeResponseUniformityClusters now inherits from Uniformity::AnalyzeResponseUniformity
->Adding new class Uniformity::AnalyzeResponseUniformityHits which inherits from Uniformity::AnalyzeResponseUniformity
->Making Uniformity::AnalyzeResponseUniformityClusters and Uniformity::AnalyzeResponseUniformityHits both friend classes of Uniformity::DetectorMPGD
->For now base analyzer class Uniformity::AnalyzeResponseUniformity is also a friend class of Uniformity::DetectorMPGD (maybe not needed...)
->Changes to Makefile.clang and Makefile.gpp to compile correctly the new classes.
->Renamed struct ClusterHistos to HistosPhysObj in include/UniformityUtilityTypes.h
Update: Mar 11th 2016
==================================================
->Adding support for a hit based analysis in addition to the cluster analysis
->Adding struct in include/UniformityUtilityTypes.h called "Hit"
->Adding a vector<Hit> object to struct SectorPhi
->Adding new generic Selector class called "Selector"
->Now ClusterSelector inherits from Selector
->Adding new class HitSelector which inherits from Selector
->We have moved setAnalysisParameters from ClusterSelector to Selector; also aSetupUniformity is now a protected data member of Selector (instead of private member of ClusterSelector)
->Added functionality to get and set Uniformity::Hit in Uniformity::DetectorMPGD; implementation follows what is done for Uniformity::Cluster
Update: Feb 23rd 2016
==================================================
->Created struct SummaryStatistics in include/UniformityUtilityTypes.h
->SummaryStatistics contains statistical variables
->An instance of SummaryStatistics has been added to SectorEta to track ADC Peak Position (from both fit & spectrum)
->Created struct ClusterHistos in include/UniformityUtilityTypes.h
->ClusterHistos now include an instance of the cluster histograms that were defined in SectorEta & SectorPhi
->An instance of ClusterHistos has been created in SectorEta & SectorPhi, increases functionality for expanding histo list
->Added to SectorEta two new std::multiset<float> objects (mset_fClustADC_Fit_PkPos, mset_fClustADC_Spec_PkPos) for tracking the results from the fit & TSpectrum
->These two new multisets are used in AnalyzeResponseUniformity::calcStatistics method
->Added AnalyzeResponseUniformity::calcStatistics method; sets the values of the SummaryStatistics container in SectorEta
Update: Feb 17th 2016
==================================================
->Changed DetectorMPGD and ParameterLoaderAmoreSRS
->Now the number of SectorPhi's per SectorEta is no longer hardcoded
->Instead the value of the "nbConnect" column in the AMORE mapping config file is used
Update: Feb 16th 2016
==================================================
->New feature, adding functionality to AnalyzResponseUniformity
->AnalyzeResponseUniformity will now be able to load previously created distributions and fit them
->See AnalyzeResponseUniformity::loadHistosFromFile()
Update: Feb 15th 2016
==================================================
->First stable release to the repository
->develop branch to be merged into the master branch
->Implementation of all fundamental classes completed
->Outstanding class includes only VisualizeUniformity
->Able to reproduce results of S. Colafranceschi from FIT
->Able to analyze detector data taken here at CERN
Update: Jan 26th 2016
==================================================
->Initial commit of repository