]>
Commit | Line | Data |
---|---|---|
12a13f6d | 1 | #include "TH1F.h" |
2 | #include "TH2F.h" | |
3 | #include "TMap.h" | |
4 | #include "TFile.h" | |
5 | #include "TTree.h" | |
6 | #include "TBranch.h" | |
7 | /* | |
8 | #include "/scratch/alla/alice/AliRoot/STEER/AliCDBManager.h" | |
9 | #include "/scratch/alla/alice/AliRoot/RAW/AliRawReader.h" | |
10 | #include "/scratch/alla/alice/AliRoot/T0/AliT0LookUpValue.h" | |
11 | #include "/scratch/alla/alice/AliRoot/T0/AliT0Parameters.h" | |
12 | #include "/scratch/alla/alice/AliRoot/T0/AliT0RawReader.h" | |
13 | */ | |
14 | void readLaserData(Int_t runNumber=905) | |
15 | { | |
16 | ||
17 | TH1F *hChannel[105]; TH1F *hNumHits[105]; TH1F *hQTC[12]; | |
18 | TH2F *hCFD_QTC[12]; TH2F *hCFD_LED[12]; TH1F *h1CFD_LED[12]; | |
19 | TH1F *hQTCc[12];TH1F *hmpd[12]; | |
20 | Int_t allData[110][5]; | |
21 | Int_t numberOfHits[105]; | |
22 | ||
23 | Char_t buf1[10], buf2[10], buf3[10], buf4[10], buf5[10], buf6[10], buf7[10]; | |
24 | ||
25 | TTree* digitsTree = new TTree("testData","Tree of test data Digits"); | |
26 | TBranch *b[106]; | |
27 | ||
28 | Int_t channels[106]; | |
29 | ||
30 | TString names[106], type; | |
31 | AliT0LookUpKey* lookkey= new AliT0LookUpKey(); | |
32 | AliT0LookUpValue* lookvalue= new AliT0LookUpValue(); | |
162637e4 | 33 | AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); |
12a13f6d | 34 | AliCDBManager::Instance()->SetRun(0); |
35 | AliT0Parameters *fParam = AliT0Parameters::Instance(); | |
36 | fParam->Init(); | |
37 | TMap *lookup = fParam->GetMapLookup(); | |
38 | TMapIter *iter = new TMapIter(lookup); | |
39 | ||
40 | for( Int_t iline=0; iline<106; iline++) | |
41 | { | |
42 | lookvalue = ( AliT0LookUpValue*) iter->Next(); | |
43 | lookkey = (AliT0LookUpKey*) lookup->GetValue((TObject*)lookvalue); | |
44 | if(lookkey){ | |
45 | Int_t key=lookkey->GetKey(); | |
46 | names[key]=lookkey->GetChannelName(); | |
47 | // cout<<lookkey->GetKey()<<" "<<lookkey->GetChannelName()<<" trm "<<lookvalue->GetTRM()<<" tdc "<<lookvalue->GetTDC()<<" chain "<<lookvalue->GetChain()<<" channel "<<lookvalue->GetChannel()<<endl; | |
48 | hChannel[key] = new TH1F(names[key].Data(),names[key].Data(),30000,0,30000); | |
49 | // hitsname="xHits" + names[key]; | |
50 | // hNumHits[key] = new TH1F(hitsname.Data(),hitsname.Data(),50,-0.25,24.25); | |
51 | type =names[key] + "/I"; | |
52 | b[key]=digitsTree->Branch(names[key].Data(),&channels[key], type); | |
53 | } | |
54 | else | |
55 | {cout<<iline<<" no such value "<<endl;} | |
56 | ||
57 | } | |
58 | for(Int_t ic=0; ic<12; ic++) { | |
59 | { | |
60 | sprintf(buf1,"QTC%i",ic+1); | |
61 | sprintf(buf2,"CFD_QTC%i",ic+1); | |
62 | sprintf(buf3,"CFD_LED%i",ic+1); | |
63 | sprintf(buf4,"LED-CFD%i",ic+1); | |
64 | sprintf(buf5,"56__%i",ic+1); | |
65 | sprintf(buf6,"55__%i",ic+1); | |
66 | sprintf(buf7,"mpd%i",ic+1); | |
67 | ||
68 | ||
69 | hQTC[ic] = new TH1F(buf1,"QTC",10000,0,10000.0); | |
70 | hQTCc[ic] = new TH1F(buf6,"QTCsmall",10000,0.0,10000.0); | |
71 | hmpd[ic] = new TH1F(buf7,"mpd",20000,-10000.0,10000.0); | |
72 | // hCFD_QTC[ic] = new TH2F(buf2,"CFD_QTC",7000,1000.5,8000.5,2000,12000.5,18000.5); | |
73 | hCFD_QTC[ic] = new TH2F(buf2,"CFD_QTC",700,1000.5,8000.5,2000,12000.5,18000.5); | |
74 | hCFD_LED[ic] = new TH2F(buf3,"CFD_LED",500,0.0,500.0,100,14600.0,14700.0); | |
75 | h1CFD_LED[ic] = new TH1F(buf4,"CFD_LED",1000,0.0,1000.0); | |
76 | ||
77 | ||
78 | } | |
79 | ||
80 | ||
81 | } | |
82 | // cout<<" hist created "<<endl; | |
83 | ||
84 | TH1F*hEffCFD= new TH1F("hEffCFD","Effeciency",50,-0.25,24.25); | |
85 | TH1F*hEffLED= new TH1F("hEffLED","Effeciency",50,-0.25,24.25); | |
86 | TH1F*hEffQT0= new TH1F("hEffQT0","Effeciency",50,-0.25,24.25); | |
87 | TH1F*hEffQT1= new TH1F("hEffQT1","Effeciency",50,-0.25,24.25); | |
88 | ||
89 | ||
90 | Char_t filename[13]; | |
91 | sprintf(filename,"t0%i.raw",runNumber); | |
92 | AliRawReader *reader = new AliRawReaderDate(filename); | |
93 | // AliRawReader *reader = new AliRawReaderFile(); | |
94 | reader->LoadEquipmentIdsMap("T0map.txt"); | |
95 | // reader->RequireHeader(kFALSE); | |
96 | reader->RequireHeader(kTRUE); | |
97 | AliT0RawReader *start = new AliT0RawReader(reader); | |
98 | // start->SetNumberOfTRM(1); | |
99 | for (Int_t i0=0; i0<105; i0++) | |
100 | { | |
101 | for (Int_t j0=0; j0<5; j0++) allData[i0][j0]=0; | |
102 | numberOfHits[i0]=0; | |
103 | } | |
104 | Int_t event=0; | |
105 | ||
106 | while (reader->NextEvent()) { | |
107 | start->Next(); | |
108 | for (Int_t i=0; i<105; i++) { | |
109 | for (Int_t iHit=0; iHit<5; iHit++) | |
110 | { | |
111 | allData[i][iHit]= start->GetData(i,iHit); | |
112 | } | |
113 | } | |
114 | ||
115 | if(event%1000 == 0) printf("Event:%d\n",event); | |
116 | ||
117 | // if(event > 200000) break; | |
118 | // cout<<"!!!! Event Number "<< event-2<<endl; | |
119 | ||
120 | for (Int_t it = 0; it<24; it=it+2) | |
121 | { | |
122 | for (Int_t iHit=0; iHit<5; iHit++) | |
123 | { | |
124 | if(allData[it+25][iHit] != 0 && allData[it+26][iHit] !=0) | |
125 | { | |
126 | Int_t cc=it/2; | |
127 | // if( allData[56][0]-allData[0][0] > 0) | |
128 | hQTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit]); | |
129 | if( allData[55][0]-allData[0][0] > 0) hQTCc[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]); | |
130 | hmpd[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]); | |
131 | if(allData[cc+1][iHit] != 0 ) hCFD_QTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit],allData[cc+1][iHit]-allData[0][0]); | |
132 | if(allData[cc+1][iHit] != 0 && allData[cc+13][iHit]!=0 ) | |
133 | { | |
134 | hCFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit],allData[cc+1][iHit]-allData[0][0]); | |
135 | h1CFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit]); | |
136 | } | |
137 | // cout<<allData[cc+1][iHit]-allData[0][0]<<" "<<cc<<endl; | |
138 | } | |
139 | } | |
140 | } | |
141 | ||
142 | for (Int_t iHit=0; iHit<5; iHit++) | |
143 | { | |
144 | ||
145 | for(Int_t ik=1; ik<105; ik++) | |
146 | { | |
147 | channels[ik] = -100; | |
148 | if((allData[ik][iHit] - allData[0][0]) > 0 ) | |
149 | { | |
150 | numberOfHits[ik]++; | |
151 | hChannel[ik] -> Fill(allData[ik][iHit] - allData[0][0]); | |
152 | channels[ik] = allData[ik][iHit] - allData[0][0]; | |
153 | } | |
154 | } | |
155 | digitsTree->Fill(); | |
156 | } | |
157 | ||
158 | event++; | |
159 | ||
160 | } //event | |
161 | ||
162 | ||
163 | if (event>1) | |
164 | { | |
165 | cout<<"efficiency for "<<event<<" events"<<endl; | |
166 | for (Int_t i0=1; i0<13; i0++) | |
167 | { | |
168 | ||
169 | cout<<names[i0].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" "; | |
170 | cout<<names[i0+13].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" "; | |
171 | cout<<names[i0+57].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" "; | |
172 | cout<<names[i0+69].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<endl; | |
173 | ||
174 | hEffCFD->Fill(i0,Float_t(numberOfHits[i0]) / Float_t(event)); | |
175 | hEffLED->Fill(i0,Float_t(numberOfHits[i0+13]) / Float_t(event)); | |
176 | hEffCFD->Fill(i0+12,Float_t(numberOfHits[i0+57]) /Float_t(event)); | |
177 | hEffLED->Fill(i0+12,Float_t(numberOfHits[i0+69]) /Float_t(event)); | |
178 | } | |
179 | cout<<endl; | |
180 | ||
181 | for (Int_t i0=0; i0<24; i0=i0+2) | |
182 | { | |
183 | hEffQT1->Fill(i0, Float_t (numberOfHits[i0+25]) / Float_t(event)); | |
184 | hEffQT0->Fill(i0, Float_t (numberOfHits[i0]+26) / Float_t(event)); | |
185 | hEffQT1->Fill((i0+12), Float_t (numberOfHits[i0]+81) / Float_t(event)); | |
186 | hEffQT0->Fill((i0+12), Float_t (numberOfHits[i0]+82) / Float_t(event)); | |
187 | cout<<names[i0+25].Data()<<" "<<Float_t(numberOfHits[i0+25])/Float_t(event)<<" "; | |
188 | cout<<names[i0+26].Data()<<" "<<Float_t(numberOfHits[i0+26])/Float_t(event)<<" "; | |
189 | cout<<names[i0+81].Data()<<" "<<Float_t(numberOfHits[i0]+81)/Float_t(event)<<" "; | |
190 | cout<<names[i0+82].Data()<<" "<<Float_t(numberOfHits[i0]+82)/Float_t(event)<<endl; | |
191 | ||
192 | ||
193 | } | |
194 | } | |
195 | ||
196 | ||
197 | Char_t filehist[40]; | |
198 | sprintf(filehist,"t0tree%i.root",runNumber); | |
199 | // sprintf(filehist,"test.root",runNumber); | |
200 | TFile *hist = new TFile(filehist,"RECREATE"); | |
201 | cout<<" writing hist in file "<<filehist<<endl; | |
202 | ||
203 | digitsTree->Write("",TObject::kOverwrite); | |
204 | ||
205 | ||
206 | hEffCFD->Write(); | |
207 | hEffLED->Write(); | |
208 | hEffQT0->Write(); | |
209 | hEffQT1->Write(); | |
210 | ||
211 | for(Int_t ik=0; ik<105; ik++) hChannel[ik] ->Write(); | |
212 | ||
213 | for (i=0; i<12; i++) | |
214 | { | |
215 | hQTC[i]->Write(); | |
216 | hQTCc[i]->Write(); | |
217 | hmpd[i]->Write(); | |
218 | hCFD_QTC[i]->Write(); | |
219 | hCFD_LED[i]->Write(); | |
220 | h1CFD_LED[i]->Write(); | |
221 | } | |
222 | ||
223 | cout<<" hist in file"<<endl; | |
224 | ||
225 | } | |
226 |