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
|
void AddContributionFromOtherAPV(TH1D* Proj, unsigned int CurrentAPV, TH1F* APV_DetId, TH1F* APV_Id, TH2F* APV_Charge);
void DebugMacro()
{
gROOT->Reset();
gStyle->SetCanvasColor(0);
gStyle->SetOptStat("neMRuoi");
gStyle->SetOptFit(111);
gStyle->SetPalette(1);
bool save = true;
TFile* file = new TFile("file:../SiStripCalib.root");
TH1F* APV_MPV = file->FindObjectAny("APV_MPV");
TH1F* APV_DetId = file->FindObjectAny("APV_DetId");
TH1F* APV_Id = file->FindObjectAny("APV_Id");
TH1F* APV_Eta = file->FindObjectAny("APV_Eta");
TH2F* APV_Charge = file->FindObjectAny("APV_Charge");
if(!(APV_MPV && APV_DetId && APV_Id && APV_Eta && APV_Charge))printf("Loading of Histos failed\n");
TCanvas* c1 = new TCanvas();
unsigned int K=0;
for(int i=0;i<APV_MPV->GetXaxis()->GetNbins();i++){
int MPV = APV_MPV->GetBinContent(i);
if(APV_Id->GetBinContent(i)!=0)continue;
if(MPV>0 && MPV<170){
printf("Low MPV (%3i) for APV_%i_%i\n",MPV, APV_DetId->GetBinContent(i), APV_Id->GetBinContent(i) );
TH1D* Proj = APV_Charge->ProjectionY(" ",i,i,"e");
Proj = (TH1D*)Proj->Clone();
if(Proj==NULL)continue;
AddContributionFromOtherAPV(Proj,i,APV_DetId,APV_Id,APV_Charge);
if(Proj->GetEntries()<40)continue;
printf("#Entries = %i\n", Proj->GetEntries());
Proj = Proj->Rebin(4);
TF1* MyLandau = new TF1("MyLandau","landau",0, 5400.0);
MyLandau->SetParameter("MPV",300);
Proj->Fit("MyLandau","QR WW 0");
TF1 * fitfunction = (TF1*) Proj->GetListOfFunctions()->First();
Proj->SetTitle();
// Proj->SetStats(kFALSE);
Proj->GetXaxis()->SetTitle("Charged (ADC Normalized)");
Proj->GetYaxis()->SetTitle("#Entries");
Proj->GetYaxis()->SetTitleOffset(1.05);
Proj->SetAxisRange(0,900 ,"X");
Proj->SetLineColor(4);
Proj->SetLineWidth(2);
Proj->Draw("HIST");
fitfunction->Draw("same");
char filepath[1024];sprintf(filepath,"DebugPictures/DetId%i_MPV%03i_Entries%05i.png",APV_DetId->GetBinContent(i), MPV, Proj->GetEntries());
if(save)c1->SaveAs(filepath);
delete Proj;
K++;
//if(K==1)return;
}
}
}
void AddContributionFromOtherAPV(TH1D* Proj, unsigned int CurrentAPV, TH1F* APV_DetId, TH1F* APV_Id, TH2F* APV_Charge){
int DetId = APV_DetId->GetBinContent(CurrentAPV);
int Id = APV_Id->GetBinContent(CurrentAPV);
for(int i=CurrentAPV;i<APV_DetId->GetXaxis()->GetNbins()&&i<CurrentAPV+6;i++){
if(APV_DetId->GetBinContent(i)!=DetId)continue;
if(APV_Id->GetBinContent(i) ==Id )continue;
TH1D* Proj2 = APV_Charge->ProjectionY(" ",i,i,"e");
Proj2 = (TH1D*)Proj2->Clone();
if(Proj2==NULL)continue;
printf("Add histos From %i_%i --> +%iEntries\n",APV_DetId->GetBinContent(i),APV_Id->GetBinContent(i),Proj->GetEntries());
Proj->Add(Proj2,1.0);
}
}
|