本文整理汇总了C++中TH2I类的典型用法代码示例。如果您正苦于以下问题:C++ TH2I类的具体用法?C++ TH2I怎么用?C++ TH2I使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TH2I类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: candleplotoption
void candleplotoption()
{
TCanvas *c1 = new TCanvas("c1","Candle Presets",1200,800);
c1->Divide(3,2);
TRandom *randnum = new TRandom();
TH2I *h1 = new TH2I("h1","Sin",18,0,360,300,-1.5,1.5);
h1->GetXaxis()->SetTitle("Deg");
float myRand;
for (int i = 0; i < 360; i+=10) {
for (int j = 0; j < 100; j++) {
myRand = randnum->Gaus(sin(i*3.14/180),0.2);
h1->Fill(i,myRand);
}
}
for (int i = 1; i < 7; i++) {
c1->cd(i);
char str[16];
sprintf(str,"candlex%d",i);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetTitle(str);
}
TCanvas *c2 = new TCanvas("c2","Candle Individual",1200,800);
c2->Divide(4,4);
char myopt[16][8] = {"0","1","11","21","31","30","111","311","301","1111","2321","12111","112111","212111","312111"};
for (int i = 0; i < 15; i++) {
c2->cd(i+1);
char str[16];
sprintf(str, "candlex(%s)",myopt[i]);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetTitle(str);
}
}
示例2: candlehisto
void candlehisto()
{
TCanvas *c1 = new TCanvas("c1","Candle Presets",800,600);
c1->Divide(3,2);
TRandom *rand = new TRandom();
TH2I *h1 = new TH2I("h1","Sin",18,0,360,100,-1.5,1.5);
h1->GetXaxis()->SetTitle("Deg");
float myRand;
for (int i = 0; i < 360; i+=10) {
for (int j = 0; j < 100; j++) {
myRand = rand->Gaus(sin(i*3.14/180),0.2);
h1->Fill(i,myRand);
}
}
for (int i = 1; i < 7; i++) {
c1->cd(i);
char str[16];
sprintf(str,"CANDLEX%d",i);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetTitle(str);
}
TCanvas *c2 = new TCanvas("c2","Violin Presets",800,300);
c2->Divide(2,1);
for (int i = 1; i < 3; i++) {
c2->cd(i);
char str[16];
sprintf(str,"VIOLINX%d",i);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetFillColor(kGray+2);
}
TCanvas *c3 = new TCanvas("c3","Playing with candle and violin-options",800,600);
c3->Divide(3,2);
char myopt[6][16] = {"1000000","2000000","3000000","1112111","112111","112111"};
for (int i = 0; i < 6; i++) {
c3->cd(i+1);
char str[16];
sprintf(str, "candlex(%s)",myopt[i]);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetFillColor(kYellow);
if (i == 4) {
TH2I * myhist2 = (TH2I*)h1->DrawCopy("candlex(1000000) same");
myhist2->SetFillColor(kRed);
}
if (i == 5) {
myhist->SetBarWidth(0.2);
myhist->SetBarOffset(0.25);
TH2I * myhist2 = (TH2I*)h1->DrawCopy("candlex(2000000) same");
myhist2->SetFillColor(kRed);
myhist2->SetBarWidth(0.6);
myhist2->SetBarOffset(-0.5);
}
myhist->SetTitle(str);
}
}
示例3: TPTiming
void TPTiming ()
{
TAxis * ax = TPMatchEmul2D->GetZaxis() ;
ax->SetRangeUser(-1,6) ;
TCanvas* canv = new TCanvas("canv", "canv") ;
canv->SetLogz(0) ;
gStyle->SetOptStat(10) ;
int color[10]= {1,10,3,4,5,6,7,8,9,2} ;
gStyle->SetPalette(7, color) ;
TPMatchEmul2D->GetXaxis()->SetTitle("Phi index");
TPMatchEmul2D->GetYaxis()->SetTitle("Eta index");
TPMatchEmul2D->Draw("colz") ;
TH2I * label = new TH2I("label", "",72, 1, 73, 38, -19, 19) ;
label->SetMarkerSize(0.6);
label->SetBit(kCanDelete);
for (int x=3 ; x<73 ; x+=4) {
for (int y=21; y<=37; y++) {
int towernb = 4*(y-21)+1 ;
label->SetBinContent(x-1, y, towernb) ; //EB+
label->SetBinContent(x, 40-y, towernb) ; //EB-
}
}
label->Draw("same text") ;
TLatex txt;
txt.SetTextSize(0.02);
TLine line;
line.SetLineColor(1) ;
line.SetLineStyle(1) ;
line.SetLineWidth(1) ;
TAxis* xAxis = TPMatchEmul2D->GetXaxis();
TAxis* yAxis = TPMatchEmul2D->GetYaxis();
// draw SM borders and numbers
float sm ;
for (int i=0; i<36 ; i++ ) {
if (i<18) {
sm = 4*i+3 ;
line.DrawLine(sm, 1, sm, 18) ;
txt.SetTextAlign(32);
txt.DrawText(sm-1+0.3, -17.7, Form("-%d",i+1));
}
else {
sm = 4*(i-18)+3 ;
line.DrawLine(sm, 0, sm, -17) ;
txt.SetTextAlign(12);
txt.DrawText(sm-2+0.3, 18.5, Form("+%d",i-17));
}
}
line.DrawLine(1, 0, 73, 0) ;
line.DrawLine(1, -17, 73, -17) ;
line.DrawLine(1, 1, 73, 1) ;
line.DrawLine(1, 18, 73, 18) ;
}
示例4: ExtractTrackBasedTiming
void ExtractTrackBasedTiming(TString fileName = "hd_root.root", int runNumber = 10390, TString variation = "default", bool verbose = false,TString prefix = ""){
// set "prefix" in case you want to ship the txt files elsewhere...
cout << "Performing Track Matched timing fits for File: " << fileName.Data() << " Run: " << runNumber << " Variation: " << variation.Data() << endl;
ExtractTrackBasedTimingNS::thisFile = TFile::Open( fileName , "UPDATE");
if (ExtractTrackBasedTimingNS::thisFile == 0) {
cout << "Unable to open file " << fileName.Data() << "...Exiting" << endl;
return;
}
//We need the existing constants, The best we can do here is just read them from the file.
vector<double> sc_tdc_time_offsets;
vector<double> sc_fadc_time_offsets;
vector<double> tof_tdc_time_offsets;
vector<double> tof_fadc_time_offsets;
vector<double> tagm_tdc_time_offsets;
vector<double> tagm_fadc_time_offsets;
vector<double> tagh_tdc_time_offsets;
vector<double> tagh_fadc_time_offsets;
vector<double> tagh_counter_quality;
double sc_t_base_fadc, sc_t_base_tdc;
double tof_t_base_fadc, tof_t_base_tdc;
double bcal_t_base_fadc, bcal_t_base_tdc;
double tagm_t_base_fadc, tagm_t_base_tdc;
double tagh_t_base_fadc, tagh_t_base_tdc;
double fdc_t_base_fadc, fdc_t_base_tdc;
double fcal_t_base;
double cdc_t_base;
double RF_Period;
cout << "Grabbing CCDB constants..." << endl;
// Base times
GetCCDBConstants1("/CDC/base_time_offset" ,runNumber, variation, cdc_t_base);
GetCCDBConstants1("/FCAL/base_time_offset",runNumber, variation, fcal_t_base);
GetCCDBConstants1("/PHOTON_BEAM/RF/beam_period",runNumber, variation, RF_Period);
GetCCDBConstants2("/FDC/base_time_offset" ,runNumber, variation, fdc_t_base_fadc, fdc_t_base_tdc);
GetCCDBConstants2("/BCAL/base_time_offset" ,runNumber, variation, bcal_t_base_fadc, bcal_t_base_tdc);
GetCCDBConstants2("/PHOTON_BEAM/microscope/base_time_offset" ,runNumber, variation, tagm_t_base_fadc, tagm_t_base_tdc);
GetCCDBConstants2("/PHOTON_BEAM/hodoscope/base_time_offset" ,runNumber, variation, tagh_t_base_fadc, tagh_t_base_tdc);
GetCCDBConstants2("/START_COUNTER/base_time_offset" ,runNumber, variation, sc_t_base_fadc, sc_t_base_tdc);
GetCCDBConstants2("/TOF/base_time_offset" ,runNumber, variation, tof_t_base_fadc, tof_t_base_tdc);
// Per channel
//GetCCDBConstants("/BCAL/TDC_offsets" ,runNumber, variation, bcal_tdc_offsets);
//GetCCDBConstants("/FCAL/timing_offsets" ,runNumber, variation, fcal_adc_offsets);
GetCCDBConstants("/START_COUNTER/adc_timing_offsets" ,runNumber, variation, sc_fadc_time_offsets);
GetCCDBConstants("/START_COUNTER/tdc_timing_offsets" ,runNumber, variation, sc_tdc_time_offsets);
GetCCDBConstants("/PHOTON_BEAM/microscope/fadc_time_offsets" ,runNumber, variation, tagm_fadc_time_offsets,3);// Interested in 3rd column
GetCCDBConstants("/PHOTON_BEAM/microscope/tdc_time_offsets" ,runNumber, variation, tagm_tdc_time_offsets,3);
GetCCDBConstants("/PHOTON_BEAM/hodoscope/fadc_time_offsets" ,runNumber, variation, tagh_fadc_time_offsets,2);// Interested in 2nd column
GetCCDBConstants("/PHOTON_BEAM/hodoscope/tdc_time_offsets" ,runNumber, variation, tagh_tdc_time_offsets,2);
GetCCDBConstants("/PHOTON_BEAM/hodoscope/counter_quality" ,runNumber, variation, tagh_counter_quality,2);
GetCCDBConstants("/TOF/adc_timing_offsets",runNumber, variation, tof_fadc_time_offsets);
GetCCDBConstants("/TOF/timing_offsets",runNumber, variation, tof_tdc_time_offsets);
cout << "CDC base times = " << cdc_t_base << endl;
cout << "FCAL base times = " << fcal_t_base << endl;
cout << "FDC base times = " << fdc_t_base_fadc << ", " << fdc_t_base_tdc << endl;
cout << "BCAL base times = " << bcal_t_base_fadc << ", " << bcal_t_base_tdc << endl;
cout << "SC base times = " << sc_t_base_fadc << ", " << sc_t_base_tdc << endl;
cout << "TOF base times = " << tof_t_base_fadc << ", " << tof_t_base_tdc << endl;
cout << "TAGH base times = " << tagh_t_base_fadc << ", " << tagh_t_base_tdc << endl;
cout << "TAGM base times = " << tagm_t_base_fadc << ", " << tagm_t_base_tdc << endl;
cout << endl;
cout << "RF_Period = " << RF_Period << endl;
cout << endl;
cout << "Done grabbing CCDB constants...Entering fits..." << endl;
// Do our final step in the timing alignment with tracking
//When the RF is present we can try to simply pick out the correct beam bucket for each of the runs
//First just a simple check to see if we have the appropriate data
bool useRF = false;
TH1I *testHist = ExtractTrackBasedTimingNS::Get1DHistogram("HLDetectorTiming", "TAGH_TDC_RF_Compare","Counter ID 001");
if (testHist != NULL){ // Not great since we rely on channel 1 working, but can be craftier later.
cout << "Using RF Times for Calibration" << endl;
useRF = true;
}
ofstream outFile;
TH2I *thisHist;
thisHist = ExtractTrackBasedTimingNS::Get2DHistogram("HLDetectorTiming", "TRACKING", "TAGM - SC Target Time");
if (useRF) thisHist = ExtractTrackBasedTimingNS::Get2DHistogram("HLDetectorTiming", "TRACKING", "TAGM - RFBunch Time");
if (thisHist != NULL){
//Statistics on these histograms are really quite low we will have to rebin and do some interpolation
outFile.open(prefix + "tagm_tdc_timing_offsets.txt", ios::out | ios::trunc);
outFile.close(); // clear file
outFile.open(prefix + "tagm_adc_timing_offsets.txt", ios::out | ios::trunc);
outFile.close(); // clear file
int nBinsX = thisHist->GetNbinsX();
int nBinsY = thisHist->GetNbinsY();
TH1D * selectedTAGMOffset = new TH1D("selectedTAGMOffset", "Selected TAGM Offset; Column; Offset [ns]", nBinsX, 0.5, nBinsX + 0.5);
TH1I * TAGMOffsetDistribution = new TH1I("TAGMOffsetDistribution", "TAGM Offset; TAGM Offset [ns]; Entries", 500, -250, 250);
for (int i = 1 ; i <= nBinsX; i++){
TH1D *projY = thisHist->ProjectionY("temp", i, i);
// Scan over the histogram
//chose the correct number of bins based on the histogram
float nsPerBin = (projY->GetBinCenter(projY->GetNbinsX()) - projY->GetBinCenter(1)) / projY->GetNbinsX();
//.........这里部分代码省略.........
示例5: main
int main (int argc, char** argv)
{
if (argc < 3) {
printHelp() ;
exit (1) ;
}
std::string inputfiles, inputdir ;
std::string outputRootName = "histoTPG.root" ;
int verbose = 0 ;
int occupancyCut = 0 ;
std::string l1algo ;
bool ok(false) ;
for (int i=0 ; i<argc ; i++) {
if (argv[i] == std::string("-h") ) {
printHelp() ;
exit(1);
}
if (argv[i] == std::string("-i") && argc>i+1) {
ok = true ;
inputfiles = argv[i+1] ;
}
if (argv[i] == std::string("-d") && argc>i+1) inputdir = argv[i+1] ;
if (argv[i] == std::string("-o") && argc>i+1) outputRootName = argv[i+1] ;
if (argv[i] == std::string("-v") && argc>i+1) verbose = atoi(argv[i+1]) ;
if (argv[i] == std::string("-l1") && argc>i+1) l1algo = std::string(argv[i+1]) ;
if (argv[i] == std::string("--cutTPOccup") && argc>i+1) occupancyCut = atoi(argv[i+1]) ;
}
if (!ok) {
std::cout<<"No input files have been given: nothing to do!"<<std::endl ;
printHelp() ;
exit(1);
}
std::vector<int> algobits ;
std::vector<std::string> algos = split(l1algo,",") ;
for (unsigned int i=0 ; i<algos.size() ; i++) algobits.push_back(atoi(algos[i].c_str())) ;
unsigned int ref = 2 ;
///////////////////////
// book the histograms
///////////////////////
TH2F * occupancyTP = new TH2F("occupancyTP", "Occupancy TP data", 72, 1, 73, 38, -19, 19) ;
occupancyTP->GetYaxis()->SetTitle("eta index") ;
occupancyTP->GetXaxis()->SetTitle("phi index") ;
TH2F * occupancyTPEmul = new TH2F("occupancyTPEmul", "Occupancy TP emulator", 72, 1, 73, 38, -19, 19) ;
occupancyTPEmul->GetYaxis()->SetTitle("eta index") ;
occupancyTPEmul->GetXaxis()->SetTitle("phi index") ;
TH1F * TP = new TH1F("TP", "TP", 256, 0., 256.) ;
TP->GetXaxis()->SetTitle("TP (ADC)") ;
TH1F * TPEmul = new TH1F("TPEmul", "TP Emulator", 256, 0., 256.) ;
TPEmul->GetXaxis()->SetTitle("TP (ADC)") ;
TH1F * TPEmulMax = new TH1F("TPEmulMax", "TP Emulator max", 256, 0., 256.) ;
TPEmulMax->GetXaxis()->SetTitle("TP (ADC)") ;
TH3F * TPspectrumMap3D = new TH3F("TPspectrumMap3D", "TP data spectrum map", 72, 1, 73, 38, -19, 19, 256, 0., 256.) ;
TPspectrumMap3D->GetYaxis()->SetTitle("eta index") ;
TPspectrumMap3D->GetXaxis()->SetTitle("phi index") ;
TH1F * TPMatchEmul = new TH1F("TPMatchEmul", "TP data matching Emulator", 7, -1., 6.) ;
TH1F * TPEmulMaxIndex = new TH1F("TPEmulMaxIndex", "Index of the max TP from Emulator", 7, -1., 6.) ;
TH3I * TPMatchEmul3D = new TH3I("TPMatchEmul3D", "TP data matching Emulator", 72, 1, 73, 38, -19, 19, 7, -1, 6) ;
TPMatchEmul3D->GetYaxis()->SetTitle("eta index") ;
TPMatchEmul3D->GetXaxis()->SetTitle("phi index") ;
TH2I * ttfMismatch = new TH2I("ttfMismatch", "TTF mismatch map", 72, 1, 73, 38, -19, 19) ;
ttfMismatch->GetYaxis()->SetTitle("eta index") ;
ttfMismatch->GetXaxis()->SetTitle("phi index") ;
///////////////////////
// Chain the trees:
///////////////////////
TChain * chain = new TChain ("EcalTPGAnalysis") ;
std::vector<std::string> files ;
if (inputfiles.find(std::string(",")) != std::string::npos) files = split(inputfiles,",") ;
if (inputfiles.find(std::string(":")) != std::string::npos) {
std::vector<std::string> filesbase = split(inputfiles,":") ;
if (filesbase.size() == 4) {
int first = atoi(filesbase[1].c_str()) ;
int last = atoi(filesbase[2].c_str()) ;
for (int i=first ; i<=last ; i++) {
std::stringstream name ;
name<<filesbase[0]<<i<<filesbase[3] ;
files.push_back(name.str()) ;
}
}
}
for (unsigned int i=0 ; i<files.size() ; i++) {
files[i] = inputdir+"/"+files[i] ;
std::cout<<"Input file: "<<files[i]<<std::endl ;
chain->Add (files[i].c_str()) ;
}
//.........这里部分代码省略.........
示例6: ReadTree_normDet
void ReadTree_normDet(){
bool testrun = 0;
const int norder_ = 4;
const int QnBinOrder_ = 2;
const double vtxCut = 15.;
static const int ptBinMin = 0;
static const int ptBinMax = nptbinsDefault-1;
static const int etaBinMin = 0; //0;
static const int etaBinMax = netabinsDefault-1;
TFile * fAna;
TTree * tree;
double centval;
double vtx;
TH2D * sumw;
TH2D * sumwqx;
TH2D * sumwqy;
TH2I * hMult;
double qnHFx_EP[NumEPNames];
double qnHFy_EP[NumEPNames];
double sumET_EP[NumEPNames];
TFile * fQNDet;
TH1D * hqnHFDet_x[NumEPNames];
TH1D * hqnHFDet_y[NumEPNames];
TFile * fQN;
TH1D * hqbins[NCENT][NEPSymm];
TFile * fVNDet;
TH2D * hVNDetX_0[NQN];
TH2D * hVNDetY_0[NQN];
TH2D * hVNDetX_1[NQN];
TH2D * hVNDetY_1[NQN];
TH2D * hVNDetX_full[NQN];
TH2D * hVNDetY_full[NQN];
TFile * fHists;
TDirectory * qwebye;
TH2D * hVn2Dfull[NCENT][NEPSymm][NQN];
TH2D * hVn2Dsub0[NCENT][NEPSymm][NQN];
TH2D * hVn2Dsub1[NCENT][NEPSymm][NQN];
TH2D * hVn2D0v1[NCENT][NEPSymm][NQN];
TH1D * hVnFull[NCENT][NEPSymm][NQN];
TH1D * hVnSub0[NCENT][NEPSymm][NQN];
TH1D * hVnSub1[NCENT][NEPSymm][NQN];
TH1I * Mult[NCENT][NEPSymm][NQN];
TH2D * h2Vn2D0v1[NCENT][NEPSymm][NQN];
TH1D * h2Vn2D0v1Magnitude[NCENT][NEPSymm][NQN];
double VnRaw_x_0;
double VnRaw_y_0;
double VnRaw_x_1;
double VnRaw_y_1;
double VnRaw_x_full;
double VnRaw_y_full;
double sumw_0;
double sumw_1;
double sumw_full;
double VnCorrected_x_0;
double VnCorrected_y_0;
double VnCorrected_x_1;
double VnCorrected_y_1;
double VnCorrected_x_full;
double VnCorrected_y_full;
int evtMult_0;
int evtMult_1;
int evtMult_full;
//
// MAIN
//
setTDRStyle();
TH1D::SetDefaultSumw2();
TH2D::SetDefaultSumw2();
TH1I::SetDefaultSumw2();
//-- Set up analyzer objects
fAna = new TFile("/rfs/jcastle/PbPb2015/PixelTracking_MB2/EbyETree_pixel_noTeff.root");
tree = (TTree *) fAna->Get("ebyeana/tree");
sumwqx = new TH2D(Form("sumwqx%i", norder_), Form("sumwqx%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumwqy = new TH2D(Form("sumwqy%i", norder_), Form("sumwqy%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumw = new TH2D("sumw", "sumw", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
hMult = new TH2I("hMult", "hMult", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
tree->SetBranchAddress("Cent", ¢val);
tree->SetBranchAddress("Vtx", &vtx);
tree->SetBranchAddress("mult", &hMult);
tree->SetBranchAddress(Form("sumwqx%i", norder_), &sumwqx);
tree->SetBranchAddress(Form("sumwqy%i", norder_), &sumwqy);
tree->SetBranchAddress("sumw", &sumw);
tree->SetBranchAddress("qnHFx_EP", &qnHFx_EP);
tree->SetBranchAddress("qnHFy_EP", &qnHFy_EP);
tree->SetBranchAddress("sumET_EP", &sumET_EP);
//.........这里部分代码省略.........
示例7: ExtractCDCDeformation
// Do the extraction of the actual constants
void ExtractCDCDeformation(TString filename = "hd_root.root"){
// Open our input and output file
thisFile = TFile::Open(filename);
TFile *outputFile = TFile::Open("CDCDeformation_Results.root", "RECREATE");
// Check to make sure it is open
if (thisFile == 0) {
cout << "Unable to open file " << filename.Data() << "...Exiting" << endl;
return;
}
// This stream will be for outputting the results in a format suitable for the CCDB
// Will wait to open until needed
ofstream textFile;
textFile.open("CDC_Deformation.txt");
// We want to display the direction of the shift as well as the magnitude in the "CDC view"
// Let's make it happen
int straw_offset[29] = {0,0,42,84,138,192,258,324,404,484,577,670,776,882,1005,1128,1263,1398,1544,1690,1848,2006,2176,2346,2528,2710,2907,3104,3313};
int Nstraws[28] = {42, 42, 54, 54, 66, 66, 80, 80, 93, 93, 106, 106, 123, 123, 135, 135, 146, 146, 158, 158, 170, 170, 182, 182, 197, 197, 209, 209};
double radius[28] = {10.72134, 12.08024, 13.7795, 15.14602, 18.71726, 20.2438, 22.01672, 23.50008, 25.15616, 26.61158, 28.33624, 29.77388, 31.3817, 32.75838, 34.43478, 35.81146, 38.28542, 39.7002, 41.31564, 42.73042, 44.34078, 45.75302, 47.36084, 48.77054, 50.37582, 51.76012, 53.36286, 54.74716};
double phi[28] = {0, 0.074707844, 0.038166294, 0.096247609, 0.05966371, 0.012001551, 0.040721951, 0.001334527, 0.014963808, 0.048683644, 0.002092645, 0.031681749, 0.040719354, 0.015197341, 0.006786058, 0.030005892, 0.019704045, -0.001782064, -0.001306618, 0.018592421, 0.003686784, 0.022132975, 0.019600866, 0.002343723, 0.021301449, 0.005348855, 0.005997358, 0.021018761};
TH2D * Amplitude_view[29];
TH2D * Direction_view[29];
TH2D * Vertical_view[29];
TH2D * Horizontal_view[29];
outputFile->mkdir("PerRing");
outputFile->cd("PerRing");
for(unsigned int iring=0; iring<28; iring++){
double r_start = radius[iring] - 0.8;
double r_end = radius[iring] + 0.8;
double phi_start = phi[iring];
double phi_end = phi_start + TMath::TwoPi();
char hname[256];
sprintf(hname, "Amplitude_view_ring[%d]", iring+1);
Amplitude_view[iring+1] = new TH2D(hname, "", Nstraws[iring], phi_start, phi_end, 1, r_start, r_end);
sprintf(hname, "Direction_view_ring[%d]", iring+1);
Direction_view[iring+1] = new TH2D(hname, "", Nstraws[iring], phi_start, phi_end, 1, r_start, r_end);
sprintf(hname, "Vertical_view_ring[%d]", iring+1);
Vertical_view[iring+1] = new TH2D(hname, "", Nstraws[iring], phi_start, phi_end, 1, r_start, r_end);
sprintf(hname, "Horizontal_view_ring[%d]", iring+1);
Horizontal_view[iring+1] = new TH2D(hname, "", Nstraws[iring], phi_start, phi_end, 1, r_start, r_end);
}
//Fit function for
TF1 *f1 = new TF1("f1", "[0] + [1] * TMath::Cos(x + [2])", -3.14, 3.14);
f1->SetParLimits(0, 0.5, 1.0);
f1->SetParLimits(1, 0.0, 0.35);
//f1->SetParLimits(2, -3.14, 3.14);
f1->SetParameters(0.78, 0.0, 0.0);
outputFile->cd();
outputFile->mkdir("FitParameters");
outputFile->cd("FitParameters");
// Make some histograms to get the distributions of the fit parameters
TH1I *h1_c0 = new TH1I("h1_c0", "Distribution of Constant", 100, 0.5, 1.0);
TH1I *h1_c1 = new TH1I("h1_c1", "Distribution of Amplitude", 100, 0.0, 0.35);
TH1I *h1_c2 = new TH1I("h1_c2", "Direction of Longest Drift Time", 100, -3.14, 3.14);
TH1F *h1_c2_weighted = new TH1F("h1_c2_weighted", "Distribution of Direction weighted by amplitude", 100, -3.14, 3.14);
TH2I *h2_c0_c1 = new TH2I("h2_c0_c1", "c_{1} Vs. c_{0}; c_{0}; c_{1}", 100, 0.5, 1.0, 100, 0, 0.35);
TH2I *h2_c0_c2 = new TH2I("h2_c0_c2", "c_{2} Vs. c_{0}; c_{0}; c_{2}", 100, 0.5, 1.0, 100, -10, 10);
TH2I *h2_c1_c2 = new TH2I("h2_c1_c2", "c_{2} Vs. c_{1}; c_{1}; c_{2}", 100, 0.0, 0.35, 100, -10, 10);
outputFile->cd();
outputFile->mkdir("Fits");
outputFile->cd("Fits");
// Now we want to loop through all available module/layer/sector and try to make a fit of each one
int ring = 1, straw = 1;
while (ring <= 28){
cout << "Entering Fit " << endl;
char folder[100];
sprintf(folder, "Ring %.2i", ring);
char strawname[100];
sprintf(strawname,"Straw %.3i Predicted Drift Distance Vs phi_DOCA", straw);
TH2I *thisStrawHistogram = Get2DHistogram("CDC_Cosmic_Per_Straw",folder,strawname);
if (thisStrawHistogram != NULL) {
// Now to do our fits. This time we know there are 16 bins.
double percentile95[16], percentile97[16], percentile99[16]; // Location of 95, 97,and 99th percentile bins
double binCenter[16];
char name[100];
sprintf(name,"Ring %.2i Straw %.3i", ring, straw);
TH1D *extractedPoints = new TH1D(name, name, 16, -3.14, 3.14);
for (int i = 1; i <= thisStrawHistogram->GetNbinsX() ; i++){
TH1D *projY = thisStrawHistogram->ProjectionY(" ", i, i);
binCenter[i-1] = thisStrawHistogram->GetXaxis()->GetBinCenter(i);
int nbins = projY->GetNbinsX();
//Get the total nubmer of entries
int nEntries = projY->GetEntries();
if (nEntries == 0) continue;
double errorFraction = TMath::Sqrt(nEntries) / nEntries;
double perc95 = 0.95*nEntries, perc97 = 0.97 * nEntries, perc99 = 0.99 * nEntries;
//.........这里部分代码省略.........
示例8: ReadTree_normDet
void ReadTree_normDet(){
bool testrun = 0;
const int norder_ = 2;
static const int ptBinMin = 0;
static const int ptBinMax = nptbinsDefault-1;
static const int etaBinMin = 0; //0;
static const int etaBinMax = netabinsDefault-1;
TFile * fAna;
TTree * tree;
double centval;
double vtx;
TH2D * sumw;
TH2D * sumwqx;
TH2D * sumwqy;
TH2I * hMult;
TFile * fVNDet;
TH1D * hVNDetX_0;
TH1D * hVNDetY_0;
TH1D * hVNDetX_1;
TH1D * hVNDetY_1;
TH1D * hVNDetX_full;
TH1D * hVNDetY_full;
TFile * fHists;
TDirectory * qwebye;
TH2D * hVn2Dfull[NCENT];
TH2D * hVn2Dsub0[NCENT];
TH2D * hVn2Dsub1[NCENT];
TH2D * hVn2D0v1[NCENT];
TH1D * hVnFull[NCENT];
TH1D * hVnSub0[NCENT];
TH1D * hVnSub1[NCENT];
TH1I * Mult[NCENT];
TH2D * h2Vn2D0v1[NCENT];
TH1D * h2Vn2D0v1Magnitude[NCENT];
double VnRaw_x_0;
double VnRaw_y_0;
double VnRaw_x_1;
double VnRaw_y_1;
double VnRaw_x_full;
double VnRaw_y_full;
double sumw_0;
double sumw_1;
double sumw_full;
double VnCorrected_x_0;
double VnCorrected_y_0;
double VnCorrected_x_1;
double VnCorrected_y_1;
double VnCorrected_x_full;
double VnCorrected_y_full;
int evtMult_0;
int evtMult_1;
int evtMult_full;
//
// MAIN
//
setTDRStyle();
TH1D::SetDefaultSumw2();
TH2D::SetDefaultSumw2();
TH1I::SetDefaultSumw2();
//-- Set up analyzer objects
fAna = new TFile(fAnaTreeName);
tree = (TTree *) fAna->Get("ebyeana/tree");
sumwqx = new TH2D(Form("sumwqx%i", norder_), Form("sumwqx%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumwqy = new TH2D(Form("sumwqy%i", norder_), Form("sumwqy%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumw = new TH2D("sumw", "sumw", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
hMult = new TH2I("hMult", "hMult", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
tree->SetBranchAddress("Cent", ¢val);
tree->SetBranchAddress("Vtx", &vtx);
tree->SetBranchAddress("mult", &hMult);
tree->SetBranchAddress(Form("sumwqx%i", norder_), &sumwqx);
tree->SetBranchAddress(Form("sumwqy%i", norder_), &sumwqy);
tree->SetBranchAddress("sumw", &sumw);
//-- Set up VN detector objects
fVNDet = new TFile( Form("V%iDet.root", norder_ ) );
hVNDetX_0 = (TH1D*) fVNDet->Get("SubEvt_0/hVNDetX_0");
hVNDetY_0 = (TH1D*) fVNDet->Get("SubEvt_0/hVNDetY_0");
hVNDetX_1 = (TH1D*) fVNDet->Get("SubEvt_1/hVNDetX_1");
hVNDetY_1 = (TH1D*) fVNDet->Get("SubEvt_1/hVNDetY_1");
hVNDetX_full = (TH1D*) fVNDet->Get("FullEvt/hVNDetX_full");
hVNDetY_full = (TH1D*) fVNDet->Get("FullEvt/hVNDetY_full");
//-- Setup the output objects
fHists = new TFile("CastleEbyE.root","recreate");
qwebye = (TDirectory*) fHists->mkdir("qwebye");
for(int icent = 0; icent < NCENT; icent++){
//.........这里部分代码省略.........
示例9: ExtractTrackBasedTiming
//.........这里部分代码省略.........
}
inFile.close();
inFile.open(inputPrefix + "fcal_base_time.txt");
if (inFile.is_open()){
while (getline (inFile, line)){
istringstream iss(line);
iss>>fcal_t_base;
}
}
inFile.close();
inFile.open(inputPrefix + "cdc_base_time.txt");
if (inFile.is_open()){
while (getline (inFile, line)){
istringstream iss(line);
iss>>cdc_t_base;
}
}
inFile.close();
// Do our final step in the timing alignment with tracking
//When the RF is present we can try to simply pick out the correct beam bucket for each of the runs
//First just a simple check to see if we have the appropriate data
bool useRF = false;
double RF_Period = 4.0080161;
TH1I *testHist = Get1DHistogram("HLDetectorTiming", "TAGH_TDC_RF_Compare","Counter ID 001");
if (testHist != NULL){ // Not great since we rely on channel 1 working, but can be craftier later.
useRF = true;
}
ofstream outFile;
TH2I *thisHist;
thisHist = Get2DHistogram("HLDetectorTiming", "TRACKING", "TAGM - SC Target Time");
if (useRF) thisHist = Get2DHistogram("HLDetectorTiming", "TRACKING", "TAGM - RFBunch Time");
if (thisHist != NULL){
//Statistics on these histograms are really quite low we will have to rebin and do some interpolation
outFile.open(prefix + "tagm_tdc_timing_offsets.txt", ios::out | ios::trunc);
outFile.close(); // clear file
outFile.open(prefix + "tagm_adc_timing_offsets.txt", ios::out | ios::trunc);
outFile.close(); // clear file
int nBinsX = thisHist->GetNbinsX();
int nBinsY = thisHist->GetNbinsY();
TH1D * selectedTAGMOffset = new TH1D("selectedTAGMOffset", "Selected TAGM Offset; Column; Offset [ns]", nBinsX, 0.5, nBinsX + 0.5);
TH1I * TAGMOffsetDistribution = new TH1I("TAGMOffsetDistribution", "TAGM Offset; TAGM Offset [ns]; Entries", 500, -250, 250);
for (int i = 1 ; i <= nBinsX; i++){
TH1D *projY = thisHist->ProjectionY("temp", i, i);
// Scan over the histogram
//chose the correct number of bins based on the histogram
float nsPerBin = (projY->GetBinCenter(projY->GetNbinsX()) - projY->GetBinCenter(1)) / projY->GetNbinsX();
float timeWindow = 3; //ns (Full Width)
int binWindow = int(timeWindow / nsPerBin);
double maxEntries = 0;
double maxMean = 0;
for (int j = 1 ; j <= projY->GetNbinsX();j++){
int minBin = j;
int maxBin = (j + binWindow) <= projY->GetNbinsX() ? (j + binWindow) : projY->GetNbinsX();
double sum = 0, nEntries = 0;
for (int bin = minBin; bin <= maxBin; bin++){
sum += projY->GetBinContent(bin) * projY->GetBinCenter(bin);
nEntries += projY->GetBinContent(bin);
if (bin == maxBin){
if (nEntries > maxEntries) {
maxMean = sum / nEntries;
maxEntries = nEntries;
示例10: frameStack2_Mall
int frameStack2_Mall(char* arg){
//Take the arguments and save them into respective strings
std::string infileName, outfileName0, outAllfileName0, outfileName1, outAllfileName1;
std::string inF, outF0, outF1, outAll0, outAll1;
std::string inPrefix, outPrefix;
std::string runs, layers;
std::string runCount;
std::istringstream stm(arg);
inPrefix = "/home/p180f/Do_Jo_Ol_Ma/Analysis/MainProcedure/testMain/rawRoot/";
outPrefix = "/home/p180f/Do_Jo_Ol_Ma/Analysis/MainProcedure/testMain/images/";
outAll0 = "sliceXCuts_allLayers.png";
outAllfileName0 = outPrefix + outAll0;
std::cout << outAll0 << " created\n";
outAll1 = "projYCuts_allLayers.png";
outAllfileName1 = outPrefix + outAll1;
std::cout << outAll1 << " created\n";
const int width=480; //width of the raw image
const int height=640; //height of the raw image
TH2I *frameHistoAll = new TH2I("frameHistoAll","Stacked Frames After Edge Cuts",width/4,0,width,height/4,0,height); //histogram for the stacked images
TH1I *chamber1All = new TH1I("chamber1All","Chamber 1 After Edge Cuts",width/4,0,width);//histogram for chamber 1 (the top one)
TH1I *chamber2All = new TH1I("chamber2All","Chamber 2 After Edge Cuts",width/4,0,width);//histogram for chamber 2
TH1I *chamber3All = new TH1I("chamber3All","Chamber 3 After Edge Cuts",width/4,0,width);//histogram for chamber 3
TH1I *chamber4All = new TH1I("chamber4All","Chamber 4 After Edge Cuts",width/4,0,width);//histogram for chamber 4 (the bottom one)
TCanvas *projCAll = new TCanvas("projCAll","",0,0,800,600);
TCanvas *pc2All = new TCanvas("pc2All", "Stack of 4 Layer Runs", 0, 0, 800, 600);
while (true) {
if (std::getline(stm, layers, ' ')) {
//create the output root file
outF0 = "sliceXCuts_" + layers + "layers.png";
outfileName0 = outPrefix + outF0;
std::cout << outF0 << " created\n";
outF1 = "projYCuts_" + layers + "layers.png";
outfileName1 = outPrefix + outF1;
std::cout << outF1 << " created\n";
//load the input root files
TChain *chain = new TChain("fourChamTree");
for (int i=0; ; i++) {
runCount = std::to_string(i);
inF = "run" + runCount + "_" + layers + "layers.root";
infileName = inPrefix + inF;
ifstream fin;
fin.open(infileName.c_str());
if (!fin.fail()) {
fin.close();
chain->Add(infileName.c_str());
std::cout << "Got " << inF << std::endl;
} else break;
}
int x=-10; //x from file
int y=-10; //y from file
int intensity=-10; //pixle intensity from file
int pNum=0;//the order in which the frame was processed
//the 2d array which will store each frame of image data.
int frame[480][640]={0};
//variables
int UNIXtime=0;
float tdc[2]={-10,-10};
//TTree *T = new TTree("T","TTree of muplus data");
//add the 'branches' to the tree we will now read in
chain->SetBranchAddress("pNum",&pNum); //branch for the frame number
chain->SetBranchAddress("frame",&frame); //branch for frame data
TH2I *frameHisto = new TH2I("frameHisto","Stacked Frames After Edge Cuts",width/4,0,width,height/4,0,height); //histogram for the stacked images
TH1I *chamber1 = new TH1I("chamber1","Chamber 1 After Edge Cuts",width/4,0,width);//histogram for chamber 1 (the top one)
TH1I *chamber2 = new TH1I("chamber2","Chamber 2 After Edge Cuts",width/4,0,width);//histogram for chamber 2
TH1I *chamber3 = new TH1I("chamber3","Chamber 3 After Edge Cuts",width/4,0,width);//histogram for chamber 3
TH1I *chamber4 = new TH1I("chamber4","Chamber 4 After Edge Cuts",width/4,0,width);//histogram for chamber 4 (the bottom one)
//loop over all data in chain
Int_t nevent = chain->GetEntries(); //get the number of entries in the TChain
for (Int_t i=0;i<nevent;i++) {
chain->GetEntry(i);
for(int x=0;x<width;x++){
for(int y=0;y<height;y++){
if(frame[x][y]>0){
frameHisto->Fill(x,y,frame[x][y]);
frameHistoAll->Fill(x,y,frame[x][y]);
if(y>580 && y<610){
chamber1->Fill(x,frame[x][y]);
chamber1All->Fill(x,frame[x][y]);
}
else if(y>400 && y<440){
chamber2->Fill(x,frame[x][y]);
chamber2All->Fill(x,frame[x][y]);
}
//.........这里部分代码省略.........
示例11: plot_pad_size_in_layer
void plot_pad_size_in_layer(TString digiPar="trd.v13/trd_v13g.digi.par", Int_t nlines=1, Int_t nrows_in_sec=0, Int_t alllayers=1)
{
gStyle->SetPalette(1,0);
gROOT->SetStyle("Plain");
gStyle->SetPadTickX(1);
gStyle->SetPadTickY(1);
gStyle->SetOptStat(kFALSE);
gStyle->SetOptTitle(kFALSE);
Bool_t read = false;
TH2I *fLayerDummy = new TH2I("LayerDummy","",1200,-600,600,1000,-500,500);
fLayerDummy->SetXTitle("x-coordinate [cm]");
fLayerDummy->SetYTitle("y-coordinate [cm]");
fLayerDummy->GetXaxis()->SetLabelSize(0.02);
fLayerDummy->GetYaxis()->SetLabelSize(0.02);
fLayerDummy->GetZaxis()->SetLabelSize(0.02);
fLayerDummy->GetXaxis()->SetTitleSize(0.02);
fLayerDummy->GetXaxis()->SetTitleOffset(1.5);
fLayerDummy->GetYaxis()->SetTitleSize(0.02);
fLayerDummy->GetYaxis()->SetTitleOffset(2);
fLayerDummy->GetZaxis()->SetTitleSize(0.02);
fLayerDummy->GetZaxis()->SetTitleOffset(-2);
TString title;
TString title1, title2, title3;
TString buffer;
TString firstModule = "";
Int_t blockCounter(0), startCounter(0); // , stopCounter(0);
Double_t msX(0), msY(0), mpX(0), mpY(0), mpZ(0), psX(0), psY(0);
Double_t ps1X(0), ps1Y(0), ps2X(0), ps2Y(0), ps3X(0), ps3Y(0);
Int_t modId(0), layerId(0);
Double_t sec1(0), sec2(0), sec3(0);
Double_t row1(0), row2(0), row3(0);
std::map<float, TCanvas*> layerView;// map key is z-position of modules
std::map<float, TCanvas*>::iterator it;
ifstream digipar;
digipar.open(digiPar.Data(), ifstream::in);
while (digipar.good()) {
digipar >> buffer;
//cout << "(" << blockCounter << ") " << buffer << endl;
if (blockCounter == 19)
firstModule = buffer;
if (buffer == (firstModule + ":")){
//cout << buffer << " <===========================================" << endl;
read = true;
}
if (read) {
startCounter++;
if (startCounter == 1) // position of module position in x
{
modId = buffer.Atoi();
layerId = (modId & (15 << 4)) >> 4; // from CbmTrdAddress.h
}
if (startCounter == 5) // position of module position in x
mpX = buffer.Atof();
if (startCounter == 6) // position of module position in y
mpY = buffer.Atof();
if (startCounter == 7) // position of module position in z
mpZ = buffer.Atof();
if (startCounter == 8) // position of module size in x
msX = buffer.Atof();
if (startCounter == 9) // position of module size in y
msY = buffer.Atof();
if (startCounter == 12) // sector 1 size in y
sec1 = buffer.Atof();
if (startCounter == 13) // position of pad size in x - do not take the backslash (@14)
ps1X = buffer.Atof();
if (startCounter == 15) // position of pad size in y
ps1Y = buffer.Atof();
if (startCounter == 17) // sector 2 size in y
sec2 = buffer.Atof();
if (startCounter == 18) // position of pad size in x
{
ps2X = buffer.Atof();
psX = ps2X; // for backwards compatibility - sector 2 is default sector
}
if (startCounter == 19) // position of pad size in y
{
ps2Y = buffer.Atof();
psY = ps2Y; // for backwards compatibility - sector 2 is default sector
}
if (startCounter == 21) // sector 3 size in y
sec3 = buffer.Atof();
if (startCounter == 22) // position of pad size in x
ps3X = buffer.Atof();
if (startCounter == 23) // position of pad size in y
ps3Y = buffer.Atof();
// if (startCounter == 23) // last element
// {
// printf("moduleId : %d, %d\n", modId, layerId);
// printf("pad size sector 1: (%.2f cm, %.2f cm) pad area: %.2f cm2\n", ps1X, ps1Y, ps1X*ps1Y);
// printf("pad size sector 2: (%.2f cm, %.2f cm) pad area: %.2f cm2\n", ps2X, ps2Y, ps2X*ps2Y);
// printf("pad size sector 3: (%.2f cm, %.2f cm) pad area: %.2f cm2\n", ps3X, ps3Y, ps3X*ps3Y);
//.........这里部分代码省略.........
示例12: makeVNDet
void makeVNDet(){
bool testrun = 0;
const int norder_ = 2;
const double vtxCut = 15.;
static const int ptBinMin = 0;
static const int ptBinMax = nptbinsDefault-1;
static const int etaBinMin = 0; //0;
static const int etaBinMax = netabinsDefault-1;
TFile * fAna;
TTree * tree;
double centval;
double vtx;
TH2D * sumw;
TH2D * sumwqx;
TH2D * sumwqy;
TH2I * hMult;
TFile * fSplit;
TTree * treeSplit;
int iSplit;
TFile * fOut;
TH1D * hVNDetX_0[NSPLIT];
TH1D * hVNDetY_0[NSPLIT];
TH1D * hVNDetX_1[NSPLIT];
TH1D * hVNDetY_1[NSPLIT];
TH1D * hVNDetX_full[NSPLIT];
TH1D * hVNDetY_full[NSPLIT];
double VNDetX_0[NCENT][NSPLIT];
double VNDetY_0[NCENT][NSPLIT];
double VNDetX_1[NCENT][NSPLIT];
double VNDetY_1[NCENT][NSPLIT];
double VNDetX_full[NCENT][NSPLIT];
double VNDetY_full[NCENT][NSPLIT];
int Nevents[NCENT][NSPLIT];
int NFails[NCENT][NSPLIT];
//
// MAIN
//
//-- Set up the analyzer objects
fAna = new TFile("/rfs/jcastle/PbPb2015/PixelTracking_MB2/EbyETree_pixel_noTeff.root");
tree = (TTree*) fAna->Get("ebyeana/tree");
sumwqx = new TH2D(Form("sumwqx%i", norder_), Form("sumwqx%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumwqy = new TH2D(Form("sumwqy%i", norder_), Form("sumwqy%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumw = new TH2D("sumw", "sumw", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
hMult = new TH2I("hMult", "hMult", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
tree->SetBranchAddress("Cent", ¢val);
tree->SetBranchAddress("Vtx", &vtx);
tree->SetBranchAddress("mult", &hMult);
tree->SetBranchAddress(Form("sumwqx%i", norder_), &sumwqx);
tree->SetBranchAddress(Form("sumwqy%i", norder_), &sumwqy);
tree->SetBranchAddress("sumw", &sumw);
//-- Set up the file splitter
fSplit = new TFile(fileSplit);
treeSplit = (TTree*) fSplit->Get("SplitTree");
treeSplit->SetBranchAddress("iSplit", &iSplit);
//-- Setup the output objects
fOut = new TFile( Form("V%iDet.root", norder_), "recreate" );
for(int iS = 0; iS < NSPLIT; iS++){
fOut->cd();
hVNDetX_0[iS] = new TH1D( Form("hVNDetX_0_Split%i", iS), Form("hVNDetX_0_Split%i", iS), NCENT, centbinsDefault);
hVNDetX_0[iS]->GetXaxis()->SetTitle("Centrality %");
hVNDetY_0[iS] = new TH1D( Form("hVNDetY_0_Split%i", iS), Form("hVNDetY_0_Split%i", iS), NCENT, centbinsDefault);
hVNDetY_0[iS]->GetXaxis()->SetTitle("Centrality %");
hVNDetX_1[iS] = new TH1D( Form("hVNDetX_1_Split%i", iS), Form("hVNDetX_1_Split%i", iS), NCENT, centbinsDefault);
hVNDetX_1[iS]->GetXaxis()->SetTitle("Centrality %");
hVNDetY_1[iS] = new TH1D( Form("hVNDetY_1_Split%i", iS), Form("hVNDetY_1_Split%i", iS), NCENT, centbinsDefault);
hVNDetY_1[iS]->GetXaxis()->SetTitle("Centrality %");
hVNDetX_full[iS] = new TH1D( Form("hVNDetX_full_Split%i", iS), Form("hVNDetX_full_Split%i", iS), NCENT, centbinsDefault);
hVNDetX_full[iS]->GetXaxis()->SetTitle("Centrality %");
hVNDetY_full[iS] = new TH1D( Form("hVNDetY_full_Split%i", iS), Form("hVNDetY_full_Split%i", iS), NCENT, centbinsDefault);
hVNDetY_full[iS]->GetXaxis()->SetTitle("Centrality %");
}
//-- initialize all variables
for(int icent = 0; icent<NCENT; icent++){
for(int iS = 0; iS < NSPLIT; iS++){
VNDetX_0[icent][iS] = 0.;
VNDetY_0[icent][iS] = 0.;
VNDetX_1[icent][iS] = 0.;
VNDetY_1[icent][iS] = 0.;
//.........这里部分代码省略.........
示例13: makePUM0Table
void makePUM0Table()
{
const TString l1_input = "/mnt/hadoop/cms/store/user/luck/L1Emulator/minbiasHIanalyzer_withregions.root";
TFile *lFile = TFile::Open(l1_input);
TTree *l1Tree = (TTree*)lFile->Get("L1UpgradeAnalyzer/L1UpgradeTree");
Int_t l1_event, l1_run;
Int_t l1_num;
Int_t region_hwPt[NREG], region_hwEta[NREG], region_hwPhi[NREG], region_tauVeto[NREG];
l1Tree->SetBranchAddress("event",&l1_event);
l1Tree->SetBranchAddress("run",&l1_run);
l1Tree->SetBranchAddress("nRegions",&l1_num);
l1Tree->SetBranchAddress("region_hwPt",region_hwPt);
l1Tree->SetBranchAddress("region_hwEta",region_hwEta);
l1Tree->SetBranchAddress("region_hwPhi",region_hwPhi);
l1Tree->SetBranchAddress("region_tauVeto",region_tauVeto);
const TString forest_input = "/mnt/hadoop/cms/store/user/luck/L1Emulator/minbiasForest_merged_v2/HiForest_PbPb_Data_minbias_fromSkim.root";
TFile *fFile = TFile::Open(forest_input);
TTree *fEvtTree = (TTree*)fFile->Get("hiEvtAnalyzer/HiTree");
TTree *fSkimTree = (TTree*)fFile->Get("skimanalysis/HltTree");
Int_t f_evt, f_run, f_lumi;
Int_t hiBin;
fEvtTree->SetBranchAddress("evt",&f_evt);
fEvtTree->SetBranchAddress("run",&f_run);
fEvtTree->SetBranchAddress("lumi",&f_lumi);
fEvtTree->SetBranchAddress("hiBin",&hiBin);
Int_t pcollisionEventSelection, pHBHENoiseFilter;
fSkimTree->SetBranchAddress("pcollisionEventSelection",&pcollisionEventSelection);
fSkimTree->SetBranchAddress("pHBHENoiseFilter",&pHBHENoiseFilter);
TFile *outFile = new TFile("HI_PUM0_evtsel_out.root","RECREATE");
std::map<Long64_t, Long64_t> kmap;
// choose loop over l1 tree first (smaller)
//std::cout << "Begin making map." << std::endl;
Long64_t l_entries = l1Tree->GetEntries();
for(Long64_t j = 0; j < l_entries; ++j)
{
l1Tree->GetEntry(j);
Long64_t key = makeKey(l1_run, l1_event);
std::pair<Long64_t,Long64_t> p(key,j);
kmap.insert(p);
}
//std::cout << "Finished making map." << std::endl;
outFile->cd();
TH1I *hists[22][18]; // [eta][pu bin], arbitrary value of 18 for # bins in pu
for(int i = 0; i < 22; ++i)
for(int j = 0; j < 18; ++j)
{
hists[i][j] = new TH1I(Form("hist_%d_%d",i,j),"", 1024,0,1024);
}
TH2I *centPUM = new TH2I("cenPUM","",200,0,200,396,0,396);
int count = 0;
Long64_t entries = fEvtTree->GetEntries();
for(Long64_t j = 0; j < entries; ++j)
{
//if(j % 10000 == 0)
// printf("%lld / %lld\n",j,entries);
fEvtTree->GetEntry(j);
Long64_t key = makeKey(f_run, f_evt);
std::map<Long64_t,Long64_t>::const_iterator got = kmap.find(key);
if(got == kmap.end() ) {
continue;
} else {
l1Tree->GetEntry(got->second);
kmap.erase(key);
count++;
fSkimTree->GetEntry(j);
if((pcollisionEventSelection == 1) && (pHBHENoiseFilter == 1))
{
//int pubin = (int) ( (double)hiBin * (18.0/200.0));
int PUM0 = 0;
for(int i = 0; i < NREG; ++i)
{
if(region_hwPt[i] > 0)
++PUM0;
}
int pubin = PUM0/22;
if(pubin == 18) pubin = 17; //special case for every region firing
for(int i = 0; i < NREG; ++i)
{
hists[region_hwEta[i]][pubin]->Fill(region_hwPt[i]);
}
centPUM->Fill(hiBin,PUM0);
}
//.........这里部分代码省略.........
示例14: Ireceive
void* Monitoring::MonitorThread(void* arg){
//std::cout<<"d1"<<std::endl;
monitor_thread_args* args= static_cast<monitor_thread_args*>(arg);
std::string outpath=args->outputpath;
zmq::socket_t Ireceive (*(args->context), ZMQ_PAIR);
Ireceive.connect("inproc://MonitorThread");
// std::vector<CardData*> carddata;
std::map<int,std::vector<TH1F> > PedTime;
std::map<int,std::vector<TH1F> > PedRMSTime;
std::vector<TH1F> rates;
std::vector<TH1F> averagesize;
std::vector<TH1I> tfreqplots;
std::map<int,std::vector<std::vector<float > > > pedpars;
TCanvas c1("c1","c1",600,400);
bool running=true;
bool init=true;
std::vector<PMT> PMTInfo;
/////////////////// Connect to sql ///////////////////////
//std::cout<<"d2"<<std::endl;
pqxx::connection *C;
std::stringstream tmp;
tmp<<"dbname=annie"<<" hostaddr=127.0.0.1"<<" port=5432" ;
C=new pqxx::connection(tmp.str().c_str());
if (C->is_open()) {
// std::cout << "Opened database successfully: " << C->dbname() << std::endl;
}
else {
std::cout << "Can't open database" << std::endl;
return false;
}
tmp.str("");
pqxx::nontransaction N(*C);
tmp<<"select gx,gy,gz,vmecard,vmechannel from pmtconnections order by channel; ";
/* Execute SQL query */
pqxx::result R( N.exec( tmp.str().c_str() ));
//pqxx::result::const_iterator c = R.begin();
///////// Fill PMT Info////////////////
for ( pqxx::result::const_iterator c = R.begin(); c != R.end(); ++c) {
PMT tmp;
tmp.gx= c[0].as<int>();
tmp.gy= c[1].as<int>();
tmp.gz= c[2].as<int>();
tmp.card= c[3].as<int>();
tmp.channel= c[4].as<int>()-1;
PMTInfo.push_back(tmp);
}
//std::cout<<"d3"<<std::endl;
while (running){
//std::cout<<"d4"<<std::endl;
zmq::message_t comm;
Ireceive.recv(&comm);
std::istringstream iss(static_cast<char*>(comm.data()));
std::string arg1="";
iss>>arg1;
//std::cout<<"d5"<<std::endl;
if(arg1=="Data"){
////////// Setting up plots/////////
std::vector<TGraph2D*> mg;
TH2I EventDisplay ("Event Display", "Event Display", 10, -1, 8, 10, -1, 8);
TH2I RMSDisplay ("RMS Display", "RMS Display", 10, -1, 8, 10, -1, 8);
std::vector<TH1F> temporalplots;
std::vector<TH1I> freqplots;
CardData* carddata;
int size=0;
iss>>size;
//freqplots.clear();
//std::cout<<"d6"<<std::endl;
for(int i=0;i<size;i++){
//std::cout<<"d7"<<std::endl;
//.........这里部分代码省略.........
示例15: makeVNDet
void makeVNDet(){
bool testrun = 0;
const int norder_ = 2;
const int QnBinOrder_ = 2;
const double vtxCut = 15.;
static const int ptBinMin = 0;
static const int ptBinMax = nptbinsDefault-1;
static const int etaBinMin = 0; //0;
static const int etaBinMax = netabinsDefault-1;
TFile * fAna;
TTree * tree;
double centval;
double vtx;
TH2D * sumw;
TH2D * sumwqx;
TH2D * sumwqy;
TH2I * hMult;
double qnHFx_EP[NumEPNames];
double qnHFy_EP[NumEPNames];
double sumET_EP[NumEPNames];
TFile * fQNDet;
TH1D * hqnHFDet_x[NumEPNames];
TH1D * hqnHFDet_y[NumEPNames];
TFile * fQN;
TH1D * hqbins[NCENT][NEPSymm];
TFile * fOut;
TDirectory * SubEvt_0;
TDirectory * SubEvt_1;
TDirectory * FullEvt;
TH2D * hVNDetX_0[NQN];
TH2D * hVNDetY_0[NQN];
TH2D * hVNDetX_1[NQN];
TH2D * hVNDetY_1[NQN];
TH2D * hVNDetX_full[NQN];
TH2D * hVNDetY_full[NQN];
double VNRawX_0[NCENT][NEPSymm][NQN];
double VNRawY_0[NCENT][NEPSymm][NQN];
double VNRawX_1[NCENT][NEPSymm][NQN];
double VNRawY_1[NCENT][NEPSymm][NQN];
double VNRawX_full[NCENT][NEPSymm][NQN];
double VNRawY_full[NCENT][NEPSymm][NQN];
double sumw_0[NCENT][NEPSymm][NQN];
double sumw_1[NCENT][NEPSymm][NQN];
double sumw_full[NCENT][NEPSymm][NQN];
int evtMult_0[NCENT][NEPSymm][NQN];
int evtMult_1[NCENT][NEPSymm][NQN];
int evtMult_full[NCENT][NEPSymm][NQN];
double VNDetX_0[NCENT][NEPSymm][NQN];
double VNDetY_0[NCENT][NEPSymm][NQN];
double VNDetX_1[NCENT][NEPSymm][NQN];
double VNDetY_1[NCENT][NEPSymm][NQN];
double VNDetX_full[NCENT][NEPSymm][NQN];
double VNDetY_full[NCENT][NEPSymm][NQN];
int Nevents[NCENT][NEPSymm][NQN];
int NFails[NCENT][NEPSymm][NQN];
//
// MAIN
//
//-- Set up the analyzer objects
fAna = new TFile(fAnaTreeName);
tree = (TTree*) fAna->Get("ebyeana/tree");
sumwqx = new TH2D(Form("sumwqx%i", norder_), Form("sumwqx%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumwqy = new TH2D(Form("sumwqy%i", norder_), Form("sumwqy%i", norder_), nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
sumw = new TH2D("sumw", "sumw", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
hMult = new TH2I("hMult", "hMult", nptbinsDefault, ptbinsDefault, netabinsDefault, etabinsDefault);
tree->SetBranchAddress("Cent", ¢val);
tree->SetBranchAddress("Vtx", &vtx);
tree->SetBranchAddress("mult", &hMult);
tree->SetBranchAddress(Form("sumwqx%i", norder_), &sumwqx);
tree->SetBranchAddress(Form("sumwqy%i", norder_), &sumwqy);
tree->SetBranchAddress("sumw", &sumw);
tree->SetBranchAddress("qnHFx_EP", &qnHFx_EP);
tree->SetBranchAddress("qnHFy_EP", &qnHFy_EP);
tree->SetBranchAddress("sumET_EP", &sumET_EP);
//-- Get the QN Detector histograms
fQNDet = new TFile( Form("../../../../../../v%i/eta2.4/systematicStudies/vtxCut/vtx3_15/AnalyzerResults/Q%iDet.root", QnBinOrder_, QnBinOrder_) );
for(int iEP = 0; iEP < NumEPNames; iEP++){
int EPbin = EPSymmPartnerBin[iEP];
if( EPbin != EPSymmBin ) continue;
hqnHFDet_x[iEP] = (TH1D*) fQNDet->Get( Form("hqnHFDet_x_%s", EPNames[iEP].data()) );
hqnHFDet_y[iEP] = (TH1D*) fQNDet->Get( Form("hqnHFDet_y_%s", EPNames[iEP].data()) );
}
//.........这里部分代码省略.........