ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/HFmon2012/macros/toy.C
Revision: 1.3
Committed: Tue Aug 14 13:32:35 2012 UTC (12 years, 8 months ago) by gaydin
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +4 -3 lines
Log Message:
clean up

File Contents

# User Rev Content
1 yilmaz 1.2 #include <string>
2     #include <vector>
3     #include <iostream>
4     #include <map>
5     #include <utility>
6    
7 gaydin 1.3 //#include "HistogramManager.h"
8     //#include "Map.h"
9 yilmaz 1.2
10     #include "TNtuple.h"
11     #include "TRandom.h"
12    
13     #include "TTree.h"
14     #include "TFile.h"
15     #include "TH1I.h"
16     #include "TH1F.h"
17     #include "TH2F.h"
18     #include "TProfile.h"
19     #include "TString.h"
20     #include "TMath.h"
21     #include "TF1.h"
22     #include "TString.h"
23     #include <fstream>
24     #include <vector>
25     #include <iomanip>
26     #include <iostream>
27    
28     using namespace std;
29    
30    
31     class Laser{
32     public:
33     Laser(double rin = 0.5){
34     r = rin;
35     s1 = 100.;
36     s2 = r*s1;
37    
38     w = 0.1;
39    
40     f1 = new TF1("f1","gaus",-10,20);
41     f2 = new TF1("f2","gaus",-10,20);
42 yilmaz 1.1
43 yilmaz 1.2 f1->SetParameter(0,s1);
44     f2->SetParameter(0,s2);
45 yilmaz 1.1
46 yilmaz 1.2 f1->SetParameter(1,0);
47     f2->SetParameter(1,1);
48    
49     f1->SetParameter(2,w);
50     f2->SetParameter(2,w);
51    
52     }
53    
54     void fillHit(TH1* h, double phase = 0){
55    
56     h->Reset();
57     for(int i = 0; i < h->GetNbinsX(); ++i){
58     double low = h->GetBinLowEdge(i);
59     double high = h->GetBinLowEdge(i+1);
60     double mid = (low+high)/2.;
61    
62     low = low + phase - 4;
63     high = high + phase - 4;
64    
65     double adc = f1->Integral(low,high)+f2->Integral(low,high);
66    
67     h->Fill(mid,adc);
68     }
69    
70     h->Draw();
71    
72     };
73    
74    
75    
76     double s1,s2,r,w;
77     TF1* f1, *f2;
78 yilmaz 1.1
79    
80    
81 yilmaz 1.2 };
82 yilmaz 1.1
83    
84    
85    
86    
87    
88 yilmaz 1.2 void simulate(double inputR = 0.5){
89    
90     Laser *laz = new Laser(inputR);
91    
92    
93     TF1* f0 = new TF1("f0","pol0",-1,3);
94 yilmaz 1.1 f0->SetParameter(0,1);
95 yilmaz 1.2 // f0->SetParameter(1,4);
96     // f0->SetParameter(2,1);
97 yilmaz 1.1
98 yilmaz 1.2 TNtuple* nt = new TNtuple(Form("nt%d",(int)(100.*inputR)),"","s1:s2:r:p");
99 yilmaz 1.1
100     TH1D* hit = new TH1D("hit","",10,0,10);
101    
102 yilmaz 1.2 double noiseFactor = 10;
103    
104     int Nev = 10000;
105    
106     for(int iev = 0; iev < Nev; iev++){
107 yilmaz 1.1
108     hit->Reset();
109    
110     double p = f0->GetRandom();
111 yilmaz 1.2 laz->fillHit(hit,p);
112 yilmaz 1.1
113     for(int i = 0; i < 10; ++i){
114 yilmaz 1.2 hit->Fill(i+0.5,noiseFactor*(gRandom->Uniform()-0.5));
115 yilmaz 1.1 }
116    
117     double s1 = hit->GetBinContent(4);
118     double s2 = hit->GetBinContent(5);
119    
120     double r = s2/s1;
121     nt->Fill(s1,s2,r,p);
122    
123     // cout<<"r : "<<r<<endl;
124     }
125    
126    
127 gaydin 1.3 nt->Draw("r:p","r > -0.2 &&r < 1.2","colz");
128     nt->Draw("r:p","r > -0.2 &&r < 1.2","prof same");
129 yilmaz 1.1
130     // hit->Draw();
131    
132     }
133    
134 yilmaz 1.2
135     void toy(){
136    
137     simulate();
138    
139     }
140    
141