52 if (plane != NULL )plane->
print();
69 for(i=0;i<kNtriggerTypes;i++){
70 hdelta_t[i]=
new TH1F(Form(
"hdelta_t[%d]",i),
";#delta_{t}[ms];",1000,0.,200.);
71 hdelta_t[i]->SetStats(0);
75 h1dtUnkOther=
new TH1F(
"h1dtUnkOther",
";#delta_{t}[ms];",1000,0.,200.);
76 h1dtUnkOther->SetStats(0);
77 h1dtTwoOther=
new TH1F(
"h1dtTwoOther",
";#delta_{t}[ms];",1000,0.,200.);
78 h1dtTwoOther->SetStats(0);
80 h2CorrVsFit=
new TH2F(
"h2CorrVsFit",
";;#tau/#tau';",16,-2,14,5,-5,5);
81 h2CorrVsFit->SetStats(0);
86 fTree =
new TTree(
"data",
"Harpo data");
87 fTree ->Branch(
"fAlignmentX",&fAlignmentX,
"fAlignmentX/D");
88 fTree ->Branch(
"fAlignmentY",&fAlignmentY,
"fAlignmentY/D");
89 fTree ->Branch(
"fAlignmentZ",&fAlignmentZ,
"fAlignmentZ/D");
90 fTree ->Branch(
"ftriggerType",&ftriggerType,
"ftriggerType/I");
91 fTree->Branch(
"fTimeStamp", &fTimeStamp,
"fTimeStamp/D");
92 fTree ->Branch(
"fQx",&fQx,
"fQx/I");
93 fTree ->Branch(
"fQy",&fQy,
"fQy/I");
95 fTree->Branch(
"fRateFit", &fRateFit,
"fRateFit/D");
96 fTree->Branch(
"fRateCal", &fRateCal,
"fRateCal/D");
98 fTree->Branch(
"fRateFitNoUp", &fRateFitNoUp,
"fRateFitNoUp/D");
99 fTree->Branch(
"fRateCalNoUp", &fRateCalNoUp,
"fRateCalNoUp/D");
100 fTree->Branch(
"fRateFitNoL", &fRateFitNoL,
"fRateFitNoL/D");
101 fTree->Branch(
"fRateCalNoL", &fRateCalNoL,
"fRateCalNoL/D");
102 fTree->Branch(
"fRateFitTTZ", &fRateFitTTZ,
"fRateFitTTZ/D");
103 fTree->Branch(
"fRateCalTTZ", &fRateCalTTZ,
"fRateCalTTZ/D");
105 fTree ->SetDirectory(0);
116 Double_t TimeStamp = fEvt->GetTimeStamp();
123 for(Int_t i = 0; i<kNtriggerTypes; i++){
125 fTriggerDownscaling[i] = 1;
126 if(pmm2Hdr == NULL)
continue;
128 if(pmm2Stat == NULL)
continue;
129 unsigned int triggerinfo = pmm2Stat->
getTrigger(i);
133 fTriggerTime[i] = triggerinfo/65536;
134 fTriggerDownscaling[i] = triggerinfo%65536;
137 for(Int_t i = 0; i<kNtriggerTypes; i++)
138 fTriggerTimeTot += fTriggerTime[i];
141 for(Int_t i = 0; i<kNtriggerTypes; i++){
142 Double_t trigCorr = 1.;
143 fTriggerCorr[i] = 1.;
145 trigCorr /= fTriggerTime[i]*1./fTriggerTimeTot;
146 if(fTriggerDownscaling[i])
147 trigCorr *= fTriggerDownscaling[i]*1.;
151 fTriggerCorr[i]= trigCorr;
166 if ( mX == NULL )
return;
167 if ( mY == NULL )
return;
170 Double_t qTotX3 = 0, qTotY3 = 0;
171 Double_t meanX3 = 0, meanY3 = 0;
172 Double_t meanZX3 = 0, meanZY3 =0;
173 Double_t meanXevt = 0, meanYevt = 0, meanZevt=0;
175 for(Int_t i=0;i<
NADC;i++){
176 Double_t qTotX = 0, qTotY = 0;
177 Double_t meanX = 0, meanY = 0, meanZX=0, meanZY=0;
178 for(Int_t j=0;j<
NCHAN;j++){
179 Double_t qX = mX->
GetData(j,i);
180 Double_t qY = mY->
GetData(j,i);
196 if(qTotX*qTotY == 0)
continue;
205 meanXevt = meanX3/qTotX3;
206 meanYevt = meanY3/qTotY3;
207 meanZevt = 0.5*(meanZX3/qTotX3+meanZY3/qTotY3);
216 if(i<150 && i2>2)
break;
219 Int_t triggerType = -1;
227 for(Int_t i=0;i<
NADC;i++){
228 for(Int_t j=0;j<
NCHAN;j++){
238 ftriggerType=triggerType;
239 fTimeStamp= TimeStamp;
240 fAlignmentX =meanXevt;
241 fAlignmentY =meanYevt;
242 fAlignmentZ =meanZevt;
245 if(triggerType==-1) fNevtTr[0]++;
246 if(triggerType==0) fNevtTr[1]++;
247 if(triggerType==2) fNevtTr[2]++;
248 if(triggerType==3) fNevtTr[3]++;
249 if(triggerType==4) fNevtTr[4]++;
251 if(triggerType==5) fNevtTr[5]++;
252 if(triggerType==7) fNevtTr[6]++;
253 if(triggerType==8) fNevtTr[7]++;
255 if(triggerType==9) fNevtTr[8]++;
256 if(triggerType==10) fNevtTr[9]++;
258 if(triggerType==11) fNevtTr[10]++;
260 if(triggerType==12) fNevtTr[11]++;
261 if(triggerType==14) fNevtTr[12]++;
265 if(triggerType == -1 && fTriggerOld ==-1)
266 hdelta_t[0] ->Fill((TimeStamp-fTimestampOld)/100000.);
268 if(triggerType==0 && fTriggerOld==0)
269 hdelta_t[1]->Fill((TimeStamp-fTimestampOld)/100000.);
271 if(triggerType==2 && fTriggerOld==2)
272 hdelta_t[2]->Fill((TimeStamp-fTimestampOld)/100000.);
274 if(triggerType==3 && fTriggerOld==3)
275 hdelta_t[3]->Fill((TimeStamp-fTimestampOld)/100000.);
277 if(triggerType==4 && fTriggerOld==4)
278 hdelta_t[4]->Fill((TimeStamp-fTimestampOld)/100000.);
280 if(triggerType==5 && fTriggerOld==5)
281 hdelta_t[5]->Fill((TimeStamp-fTimestampOld)/100000.);
283 if(triggerType==7 && fTriggerOld==7)
284 hdelta_t[6]->Fill((TimeStamp-fTimestampOld)/100000.);
286 if(triggerType==8 && fTriggerOld==8)
287 hdelta_t[7]->Fill((TimeStamp-fTimestampOld)/100000.);
289 if(triggerType==9 && fTriggerOld==9)
290 hdelta_t[8]->Fill((TimeStamp-fTimestampOld)/100000.);
292 if(triggerType==10 && fTriggerOld==10)
293 hdelta_t[9]->Fill((TimeStamp-fTimestampOld)/100000.);
295 if(triggerType==11 && fTriggerOld==11)
296 hdelta_t[10]->Fill((TimeStamp-fTimestampOld)/100000.);
298 if(triggerType==12 && fTriggerOld==12)
299 hdelta_t[11]->Fill((TimeStamp-fTimestampOld)/100000.);
301 if(triggerType==14 && fTriggerOld==14)
302 hdelta_t[12]->Fill((TimeStamp-fTimestampOld)/100000.);
304 if((triggerType==-1&&fTriggerOld!=-1)||(fTriggerOld==-1&&triggerType!=-1))
305 h1dtUnkOther->Fill((TimeStamp-fTimestampOld)/100000.);
307 if(triggerType!= fTriggerOld &&triggerType!=-1 &&fTriggerOld!=-1)
308 h1dtTwoOther->Fill((TimeStamp-fTimestampOld)/100000.);
310 if(nEvents%500==0) cout<<
"nEvent= "<<nEvents<<endl;
313 fTriggerOld = triggerType;
314 fTimestampOld = TimeStamp;
324 Double_t ttot=(fTimestampOld - t0)/1e8;
326 TF1* fExp =
new TF1(
"fExp",
"expo",0.,200.);
327 fExp->SetLineColor(kRed);
329 for(Int_t i = 0; i<14; i++){
330 tc[i] =
new TCanvas(Form(
"tc%d",i),
"Event Map",700,500);
333 for(Int_t i = 0; i<13; i++){
339 if(i==0) tl =
new TText(0.2,0.9,
"TrLine: Unknown");
340 if(i==1) tl =
new TText(0.2,0.9,
"TrLine: TTZ");
341 if(i==2) tl =
new TText(0.2,0.9,
"TrLine: Gamma");
342 if(i==3) tl =
new TText(0.2,0.9,
"TrLine: No Mesh");
343 if(i==4) tl =
new TText(0.2,0.9,
"TrLine: Inv Mesh");
344 if(i==5) tl =
new TText(0.2,0.9,
"TrLine: No Up");
345 if(i==6) tl =
new TText(0.2,0.9,
"TrLine: Gamma L");
346 if(i==7) tl =
new TText(0.2,0.9,
"TrLine: No Mesh L");
347 if(i==8) tl =
new TText(0.2,0.9,
"TrLine: Inv Mesh L");
348 if(i==9) tl =
new TText(0.2,0.9,
"TrLine: No Up L");
349 if(i==10) tl =
new TText(0.2,0.9,
"TrLine: No PM L");
350 if(i==11) tl =
new TText(0.2,0.9,
"TrLine: No L");
351 if(i==12) tl =
new TText(0.2,0.9,
"TrLines: Cosmic");
353 tl->SetTextSize(0.04);
355 MakeNiceHisto(hdelta_t[i],tc[i]->GetPad(1),
"");gPad->SetLogy();
356 if(hdelta_t[i]->GetMaximum()>0){
357 hdelta_t[i]->Fit(fExp);
358 Double_t A = fExp->GetParameter(0);
359 Double_t S = fExp->GetParameter(1);
361 if(i==1) fRateFitTTZ = -1000*S;
362 if(i==6) fRateFit = -1000*S;
363 if(i==9) fRateFitNoUp = -1000*S;
364 if(i==11) fRateFitNoL = -1000*S;
367 TLatex *lmesh =
new TLatex();
368 lmesh->SetTextFont(132);
369 lmesh->SetTextAlign(12);
370 lmesh->SetTextSize(0.05);
371 lmesh->SetTextColor(4);
372 lmesh->DrawLatex(100, 0.8*hdelta_t[i]->GetMaximum(),Form(
"F = exp[%.2f t+%.2f] ",S*1000,A));
375 lmesh->DrawLatex(100, 0.4*hdelta_t[i]->GetMaximum(),Form(
"taux_Corr: %.2f",fNevtTr[i]* fTriggerCorr[i-1]*1./ttot));
376 cout<<
"i= "<<i-1<<
" TriggerTime="<<fTriggerTime[i-1] <<
"N= "<<fNevtTr[i] <<
" corr="<<fTriggerCorr[i-1] <<
" tot="<<ttot<<endl;
377 h2CorrVsFit->Fill(i,(S*1000.*ttot)/(fNevtTr[i]*fTriggerCorr[i-1]));
379 fRateCalTTZ = fNevtTr[i]* fTriggerCorr[i+1]*1./ttot;
383 lmesh->DrawLatex(100, 0.4*hdelta_t[i]->GetMaximum(),Form(
"taux_Corr: %.2f",fNevtTr[i]* fTriggerCorr[i+1]*1./ttot));
385 if(i==6) fRateCal = fNevtTr[i]* fTriggerCorr[i+1]*1./ttot;
386 if(i==9) fRateCalNoUp = fNevtTr[i]* fTriggerCorr[i+1]*1./ttot;
387 if(i==11) fRateCalNoL = fNevtTr[i]* fTriggerCorr[i+1]*1./ttot;
389 cout<<
"i= "<<i<<
" TriggerTime="<<fTriggerTime[i+1] <<
"N= "<<fNevtTr[i] <<
" corr="<<fTriggerCorr[i+1] <<
" tot="<<ttot<<endl;
394 h2CorrVsFit->Fill(i,(-1000.*S*ttot)/(fNevtTr[i]*fTriggerCorr[i+1]));
399 h2CorrVsFit->SetMarkerColor(kRed);
400 h2CorrVsFit->SetMarkerSize(40);
444 tc[0]->SaveAs(Form(
"/home/wang/HarpoAnalysis/tauxR/Run%lli_TriggerTime.pdf[",
gHConfig->
GetRunNo()));
445 for(Int_t i = 0; i<14; i++)
446 tc[i]->SaveAs(Form(
"/home/wang/HarpoAnalysis/tauxR/Run%lli_TriggerTime.pdf",
gHConfig->
GetRunNo()));
447 tc[13]->SaveAs(Form(
"/home/wang/HarpoAnalysis/tauxR/Run%lli_TriggerTime.pdf]",
gHConfig->
GetRunNo()));
449 tc[0]->SaveAs(Form(
"/home/wang/HarpoAnalysis/taux/Run%lli_TriggerTime.pdf[",
gHConfig->
GetRunNo()));
450 for(Int_t i = 0; i<14; i++)
451 tc[i]->SaveAs(Form(
"/home/wang/HarpoAnalysis/taux/Run%lli_TriggerTime.pdf",
gHConfig->
GetRunNo()));
452 tc[13]->SaveAs(Form(
"/home/wang/HarpoAnalysis/taux/Run%lli_TriggerTime.pdf]",
gHConfig->
GetRunNo()));
463 for(i=0;i<kNtriggerTypes;i++)
464 hdelta_t[i]->Write();
466 h1dtUnkOther->Write();
467 h1dtTwoOther->Write();
468 h2CorrVsFit->Write();
Long64_t GetRunNo()
Set Run Number.
A class Pmm2Status is bits representation of pmm2 status register (0x400).
Double_t GetData(Int_t i, Int_t j)
Set/Get Data Cell.
Bool_t isExist(ULong_t det)
Detecror date exist //! Number of Real Detectors.
unsigned int getTrigger(int trig) const
Dummy analysis to run as test and example. Give basic histograms of the data.
unpacked dcc data The class contains the data map for DCC or Feminos The data is stored as a 2D TMatr...
TVirtualPad * MakeNiceHisto(TH1 *hist, TVirtualPad *c1, const char *opt, Bool_t copy)
A class store HARPO raw PMM2 event buffer and header. End provide access metods to the row data...
void Save(char *mode=NULL)
const ULong_t gkNDetectors
R__EXTERN HarpoDetSet * gHDetSet