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
|
#ifndef CSCObjects_CSCGainsStudyHistograms_H
#define CSCObjects_CSCGainsStudyHistograms_H
/** \class CSCGainsStudyHistograms
* Collection of histograms for plotting gain correction weights
* in each chambers used in MTCC.
*
* Author: D. Fortin - UC Riverside
*/
#include "TH1F.h"
#include "TH2F.h"
#include "TFile.h"
#include "TString.h"
#include <string>
#include <iostream>
class HCSCGains {
public:
/// Constructor from collection name
HCSCGains(std::string name_) {
TString N = name_.c_str();
name = N;
hGains = new TH1F("hGain_" + name, name, 200, 0.75, 3.75);
hGaindiff = new TH1F("hGaindiff_" + name, name, 101, -0.101, 0.101);
hGainvsch = new TH2F("hGainvsch_" + name, name, 600, 100.5, 700.5, 81, 0.7975, 1.225);
}
/// Constructor from collection name and TFile.
HCSCGains(TString name_, TFile *file) {
name = name_;
hGains = (TH1F *)file->Get("hGains_" + name);
hGaindiff = (TH1F *)file->Get("hGaindiff_" + name);
hGainvsch = (TH2F *)file->Get("hGainvsch_" + name);
}
/// Destructor
virtual ~HCSCGains() {
delete hGains;
delete hGaindiff;
delete hGainvsch;
}
// Operations
/// Fill all the histos
void Fill(float weight, float weight0, int channel, int layer) {
float weightx = weight + float(layer - 1) / 2.;
hGains->Fill(weightx);
int id = channel + 100 * layer;
hGainvsch->Fill(id, weight);
if (weight0 > 0. && weight > 0.)
hGaindiff->Fill(weight - weight0);
}
/// Write all the histos to currently opened file
void Write() {
hGains->GetXaxis()->SetTitle("weight + (layer - 1)/2");
hGains->Write();
hGaindiff->GetXaxis()->SetTitle("weight diff between 2 adjacent strips");
hGaindiff->Write();
hGainvsch->GetXaxis()->SetTitle("strip_id + 100 x layer");
hGainvsch->GetYaxis()->SetTitle("weight");
hGainvsch->Write();
}
TH1F *hGains;
TH1F *hGaindiff;
TH2F *hGainvsch;
TString name;
};
#endif
|