36 TObjArray* ali_array =
new TObjArray();
48 for (Int_t n_array = StartArray; n_array < N_array; ++n_array) {
49 cout <<
"n_array = " << n_array << endl;
51 TFile*
f =
new TFile(Form(
"ScanVolume_Ali_%d_CUTTYPE_%d_SELECTTYPE_%d.root",n_array,
CUTTYPE,999));
61 cout <<
"read_pvr.C :: I have read a EdbPVRec* object from basetrack cp data. " << endl;
62 cout <<
"read_pvr.C :: ali = " <<
ali <<
" and it has ali->Npatterns()= " <<
ali->
Npatterns() << endl;
70 TH2D* h_dR_dT =
new TH2D(
"h_dR_dT",
"",200,0,0.2,200,0,40);
71 TH2D* h2_dR_dT =
new TH2D(
"h2_dR_dT",
"",200,0,0.2,200,0,40);
74 TH2D* h_dchi2_dW =
new TH2D(
"h_dchi2_dW",
"",13,-6.5,6.5,100,-1,1);
75 TH2D* h2_dchi2_dW =
new TH2D(
"h2_dchi2_dW",
"",13,-6.5,6.5,100,-1,1);
77 TH2D* h_chi2_W =
new TH2D(
"h_chi2_W",
"",26,5.5,31.5,100,0,2);
78 TH2D* h2_chi2_W =
new TH2D(
"h2_chi2_W",
"",26,5.5,31.5,100,0,2);
80 TH2D* h_TX_TY =
new TH2D(
"h_TX_TY",
"",100,-0.5,0.5,100,-0.5,0.5);
81 TH2D* h2_TX_TY =
new TH2D(
"h2_TX_TY",
"",100,-0.5,0.5,100,-0.5,0.5);
83 TH2D* h_DeltaTanTheta_Angle =
new TH2D(
"h_DeltaTanTheta_Angle",
"",200,0,0.2,200,0,0.2);
85 TH2D* h_X_Y =
new TH2D(
"h_X_Y",
"",1250,0,125000,1000,0,100000);
86 TH2D* h2_X_Y =
new TH2D(
"h2_X_Y",
"",1250,0,125000,1000,0,100000);
88 TH2D* h_X_Y =
new TH2D(
"h_X_Y",
"",2*1250,0,125000,2*1000,0,100000);
89 TH2D* h2_X_Y =
new TH2D(
"h2_X_Y",
"",2*1250,0,125000,2*1000,0,100000);
91 TH1D* h2_X_Y_ProjX =
new TH1D(
"h2_X_Y_ProjX",
"",2*1250,0,125000);
102 TCanvas* c_DeltaTanTheta_Angle =
new TCanvas(
"c_DeltaTanTheta_Angle",
"c_DeltaTanTheta_Angle");
105 Float_t deltaTheta=0;
108 Float_t deltaTanTheta=0;
109 Float_t angleTheta=0;
125 Float_t halfpatternsize=40;
127 Double_t deltaThetaTEST;
129 Double_t dR_allowed_m_deltaR;
133 TCanvas* c_X_Y =
new TCanvas(Form(
"c_X_Y_%d",n_array),Form(
"c_X_Y_%d",n_array));
134 TCanvas* c2_X_Y =
new TCanvas(Form(
"c2_X_Y_%d",n_array),Form(
"c2_X_Y_%d",n_array));
137 for (n_array = 0; n_array < N_array; ++n_array) {
140 cout <<
"Doing Array " << n_array <<
" ----------------------------------------" << endl;
147 Int_t npataliNEW = aliNEW->Npatterns();
148 for (
int ctr_i = 0; ctr_i< npataliNEW; ++ctr_i ) aliNEW->GetPattern(ctr_i)->Reset();
158 for (
int i = 0; i <aliSource->Npatterns(); i++ ) {
160 cout <<
"Doing Pattern " << i << endl;
166 Int_t nPatClone=patClone->
N();
168 for (
int j = 0; j < nPat; j++ ) {
170 if (j%25000==0) cout << j <<
" out of " << nPat << endl;
175 mini[0]=seg->
X()-halfpatternsize;
176 mini[1]=seg->Y()-halfpatternsize;
177 maxi[0]=seg->X()+halfpatternsize;
178 maxi[1]=seg->Y()+halfpatternsize;
180 Int_t nPatsinglePattern=singlePattern->
N();
188 for (
int k = 0; k < nPatsinglePattern; k++ ) {
195 if (seg->IsEqual(seg1))
continue;
198 if (TMath::Abs(seg->X()-seg1->
X())>40.1)
continue;
199 if (TMath::Abs(seg->Y()-seg1->
Y())>40.1)
continue;
200 if (TMath::Abs(seg->TX()-seg1->
TX())>0.21)
continue;
201 if (TMath::Abs(seg->TY()-seg1->
TY())>0.21)
continue;
205 if (seg->ID() > seg1->
ID())
continue;
209 deltaR=TMath::Sqrt( TMath::Power(seg->X()-seg1->
X(),2)+TMath::Power(seg->Y()-seg1->
Y(),2) );
210 if (deltaR>40)
continue;
212 deltaTanTheta=TMath::Sqrt( TMath::Power(seg->TX()-seg1->
TX(),2)+TMath::Power(seg->TY()-seg1->
TY(),2) );
213 if (deltaTanTheta>0.2)
continue;
216 deltaThetaTEST = TMath::ASin(seg->Angle(*seg,*seg1));
220 deltaTheta = deltaTanTheta;
223 deltachi2 = seg->Chi2()-seg1->
Chi2();
224 deltaW = seg->W()-seg1->
W();
229 h_dR_dT->Fill(deltaTheta,deltaR);
230 h_dchi2_dW->Fill(deltaW,deltachi2);
231 h_chi2_W->Fill(seg->W(),seg->Chi2());
232 h_TX_TY->Fill(seg->TX(),seg->TY());
233 h_DeltaTanTheta_Angle ->Fill(angleTheta,deltaTanTheta);
234 h_X_Y->Fill(seg->X(),seg->Y());
248 dR_allowed = 14.0/0.13*deltaTheta;
250 dR_allowed_m_deltaR=TMath::Abs(deltaR-dR_allowed);
253 if (dR_allowed_m_deltaR<0.5) IsRegion0=kTRUE;
254 if (deltaR<3.0 && deltaTheta<0.01) IsRegion1=kTRUE;
255 if (abs(deltaR-6.0)<2 && deltaTheta<0.01) IsRegion2=kTRUE;
268 if (
SELECTTYPE==3)
if ( !(IsRegion0 || IsRegion1 || IsRegion2) )
continue;
274 h2_dR_dT->Fill(deltaTheta,deltaR);
275 h2_dchi2_dW->Fill(deltaW,deltachi2);
276 h2_chi2_W->Fill(seg->W(),seg->Chi2());
277 h2_TX_TY->Fill(seg->TX(),seg->TY());
278 h2_X_Y->Fill(seg->X(),seg->Y());
294 delete singlePattern;
299 if (QUICK) i+=aliSource->Npatterns()-1;
304 TFile*
f =
new TFile(Form(
"ScanVolume_Ali_%d_CUTTYPE_%d_SELECTTYPE_%d.root",n_array,
CUTTYPE,
SELECTTYPE),
"RECREATE");
319 h_dR_dT->Draw(
"colz");
320 h_dR_dT->GetXaxis()->SetTitle(
"#Delta tan #theta");
321 h_dR_dT->GetYaxis()->SetTitle(
"#DeltaR (#mum)");
324 c_dR_dT->Print(
"Plot_ViewOverlap_CPData_dR_dT.pdf");
327 h_dchi2_dW->Draw(
"colz");
329 h_dchi2_dW->GetYaxis()->SetTitle(
"#Delta#chi^{2}");
330 h_dchi2_dW->GetXaxis()->SetTitle(
"#DeltaW");
332 c_dchi2_dW->Print(
"Plot_ViewOverlap_CPData_dchi2_dW.pdf");
335 h2_dR_dT->Draw(
"colz");
337 h2_dR_dT->GetXaxis()->SetTitle(
"#Delta tan #theta");
338 h2_dR_dT->GetYaxis()->SetTitle(
"#DeltaR (#mum)");
341 c2_dR_dT->Print(Form(
"Plot_ViewOverlap_CPData_dR_dT_SELECTTYPE_%d.pdf",
SELECTTYPE));
344 h2_dchi2_dW->Draw(
"colz");
345 h2_dchi2_dW->GetYaxis()->SetTitle(
"#Delta#chi^{2}");
346 h2_dchi2_dW->GetXaxis()->SetTitle(
"#DeltaW");
348 c2_dchi2_dW->Print(Form(
"Plot_ViewOverlap_CPData_dchi2_dW_SELECTTYPE_%d.pdf",
SELECTTYPE));
351 h_chi2_W->Draw(
"colz");
352 h_chi2_W->GetYaxis()->SetTitle(
"#chi^{2}");
353 h_chi2_W->GetXaxis()->SetTitle(
"W");
355 c_chi2_W->Print(
"Plot_ViewOverlap_CPData_chi2_W.pdf");
358 h2_chi2_W->Draw(
"colz");
359 h2_chi2_W->GetYaxis()->SetTitle(
"#chi^{2}");
360 h2_chi2_W->GetXaxis()->SetTitle(
"W");
362 c2_chi2_W->Print(Form(
"Plot_ViewOverlap_CPData_chi2_W_SELECTTYPE_%d.pdf",
SELECTTYPE));
365 h_TX_TY->Draw(
"colz");
366 h_TX_TY->GetYaxis()->SetTitle(
"tan #theta_{Y}");
367 h_TX_TY->GetXaxis()->SetTitle(
"tan #theta_{X}");
370 c_TX_TY->Print(
"Plot_ViewOverlap_CPData_TX_TY.pdf");
373 h2_TX_TY->Draw(
"colz");
374 h2_TX_TY->GetYaxis()->SetTitle(
"tan #theta_{Y}");
375 h2_TX_TY->GetXaxis()->SetTitle(
"tan #theta_{X}");
378 c2_TX_TY->Print(Form(
"Plot_ViewOverlap_CPData_TX_TY_SELECTTYPE_%d.pdf",
SELECTTYPE));
381 c_DeltaTanTheta_Angle->cd();
382 h_DeltaTanTheta_Angle->Draw(
"colz");
383 h_DeltaTanTheta_Angle->GetYaxis()->SetTitle(
"#Delta tan #theta");
384 h_DeltaTanTheta_Angle->GetXaxis()->SetTitle(
"angle #Theta (rad)");
385 c_DeltaTanTheta_Angle->SetLogz();
387 c_DeltaTanTheta_Angle->Print(
"Plot_ViewOverlap_CPData_DeltaTanTheta_Angle.pdf");
392 h_X_Y->GetXaxis()->SetTitle(
"X (#mum)");
393 h_X_Y->GetYaxis()->SetTitle(
"Y (#mum)");
396 TPaletteAxis *palette = (TPaletteAxis*)h_X_Y->GetListOfFunctions()->FindObject(
"palette");
397 palette->SetY1NDC(0.2);
398 palette->SetX2NDC(0.93);
400 c_X_Y->Print(
"Plot_ViewOverlap_CPData_X_Y.pdf");
403 h2_X_Y->Draw(
"colz");
404 h2_X_Y->GetXaxis()->SetTitle(
"X (#mum)");
405 h2_X_Y->GetYaxis()->SetTitle(
"Y (#mum)");
408 TPaletteAxis *palette = (TPaletteAxis*)h2_X_Y->GetListOfFunctions()->FindObject(
"palette");
409 palette->SetY1NDC(0.2);
410 palette->SetX2NDC(0.93);
412 c2_X_Y->Print(Form(
"Plot_ViewOverlap_CPData_X_Y_SELECTTYPE_%d.pdf",
SELECTTYPE));
418 TFile*
f =
new TFile(Form(
"HistosFakeDoubleBT_CUTTYPE_%d_SELECTTYPE_%d.root",
CUTTYPE,
SELECTTYPE),
"RECREATE");
421 h_dchi2_dW ->
Write();
422 h2_dchi2_dW ->
Write();
424 h2_chi2_W ->
Write();
427 h_DeltaTanTheta_Angle ->
Write();
FILE * f
Definition: RecDispMC.C:150
EdbPVRec * ali
Definition: align.C:1
Definition: EdbDataSet.h:180
int InitVolume(int datatype=0, const char *rcut="1")
Definition: EdbDataSet.cxx:2071
static double Angle3(float tx1, float ty1, float tx2, float ty2)
Definition: EdbMath.cxx:42
Definition: EdbPVRec.h:148
Definition: EdbPattern.h:280
EdbPattern * ExtractSubPattern(float min[5], float max[5], int MCevt=-1)
Definition: EdbPattern.cxx:1593
Int_t Npatterns() const
Definition: EdbPattern.h:380
void Print() const
Definition: EdbPattern.cxx:1853
Float_t TX() const
Definition: EdbSegP.h:172
Int_t ID() const
Definition: EdbSegP.h:144
Float_t X() const
Definition: EdbSegP.h:170
Float_t Chi2() const
Definition: EdbSegP.h:154
Float_t Y() const
Definition: EdbSegP.h:171
Float_t W() const
Definition: EdbSegP.h:148
Float_t TY() const
Definition: EdbSegP.h:173
EdbSegP * AddSegmentNoDuplicate(EdbSegP &s)
Definition: EdbPattern.cxx:91
Int_t N() const
Definition: EdbPattern.h:89
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
EdbDataProc * proc
Definition: read_pvr.C:3
Int_t SELECTTYPE
Definition: testFakeDoubletBTReduction.C:25
Int_t CUTTYPE
Definition: testFakeDoubletBTReduction.C:24