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
|
{
cout << "macro cos_ug: generate cosmic muons underground" << endl;
gROOT->Reset();
gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/CosmicMuonGenerator.cc");
gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/CMSCGEN.cc");
gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/CMSCGENnorm.cc");
gROOT->LoadMacro("GeneratorInterface/CosmicMuonGenerator/src/SingleParticleEvent.cc");
#define ROOT_INTERACTIVE true
//*******************************
//*******************************
// define the generator
CosmicMuonGenerator CosUgGen;
// set up generator
CosUgGen.setNumberOfEvents(100);
CosUgGen.setRanSeed(135799468);
CosUgGen.setMinP(3.); // could be set higher due to energy loss in earth above CMS
CosUgGen.setMaxP(3000.);
CosUgGen.setMaxTheta(80.); // "default" value for underground
// run the generator (in this order)
CosUgGen.runCMG();
// rate (cosmic muons per second)
double Rate = CosUgGen.getRate();
//*******************************
//*******************************
#if ROOT_INTERACTIVE
double Weight = Rate/phi->GetEntries();
ene->Scale(Weight);
the->Scale(Weight);
phi->Scale(Weight);
// plot results
TCanvas *C1 = new TCanvas("cosgen","generated cosmic muons",50,50,1000,400);
C1->SetBottomMargin(0.15);
C1->Divide(3,1);
C1->cd(1); gPad->SetLogy(1);
ene->SetFillStyle(1001);
ene->SetFillColor(1111);
ene->SetLineWidth(1.1);
ene->SetLineColor(8888);
ene->Draw();
ene->GetXaxis()->SetLabelSize(0.04);
ene->GetXaxis()->SetTitleSize(0.044);
ene->GetXaxis()->SetTitleOffset(0.8);
ene->GetXaxis()->SetTitle("E [GeV]");
ene->GetYaxis()->SetLabelSize(0.04);
ene->GetYaxis()->SetLabelOffset(0.004);
ene->GetYaxis()->SetTitleSize(0.044);
ene->GetYaxis()->SetTitleOffset(1.2);
ene->GetYaxis()->SetTitle("rate per 5 GeV [Hz]");
C1->cd(2);
the->SetMinimum(0.);
the->SetFillStyle(1001);
the->SetFillColor(1111);
the->SetLineWidth(1.1);
the->SetLineColor(8888);
the->Draw();
the->GetXaxis()->SetLabelSize(0.04);
the->GetXaxis()->SetTitleSize(0.044);
the->GetXaxis()->SetTitleOffset(0.8);
the->GetXaxis()->SetTitle("#vartheta [#circ]");
the->GetYaxis()->SetLabelSize(0.04);
the->GetYaxis()->SetLabelOffset(0.004);
the->GetYaxis()->SetTitleSize(0.044);
the->GetYaxis()->SetTitleOffset(1.8);
the->GetYaxis()->SetTitle("rate per 1 #circ [Hz]");
C1->cd(3);
phi->SetMinimum(0.);
phi->SetFillStyle(1001);
phi->SetFillColor(1111);
phi->SetLineWidth(1.1);
phi->SetLineColor(8888);
phi->Draw();
phi->GetXaxis()->SetLabelSize(0.04);
phi->GetXaxis()->SetTitleSize(0.044);
phi->GetXaxis()->SetTitleOffset(0.8);
phi->GetXaxis()->SetTitle("#varphi [#circ]");
phi->GetYaxis()->SetLabelSize(0.04);
phi->GetYaxis()->SetLabelOffset(0.004);
phi->GetYaxis()->SetTitleSize(0.044);
phi->GetYaxis()->SetTitleOffset(1.8);
phi->GetYaxis()->SetTitle("rate per 3 #circ [Hz]");
TCanvas *C2 = new TCanvas("vertex","position of generated vertex",100,200,900,450);
C2->SetBottomMargin(0.15);
C2->Divide(1,1);
C2->cd(1);
ver->SetMarkerColor(3333);
ver->Draw();
ver->GetXaxis()->SetLabelSize(0.05);
ver->GetXaxis()->SetTitleSize(0.06);
ver->GetXaxis()->SetTitle("gen. Z [m]");
ver->GetYaxis()->SetLabelSize(0.04);
ver->GetYaxis()->SetTitleSize(0.05);
ver->GetYaxis()->SetTitleOffset(1.0);
ver->GetYaxis()->SetTitle("gen. X [m]");
ver->GetZaxis()->SetLabelSize(0.05);
ver->GetZaxis()->SetTitleSize(0.06);
ver->GetZaxis()->SetTitleOffset(0.6);
ver->GetZaxis()->SetTitle("gen. Y [m]");
#endif
}
|