29 #include "THnSparse.h"
33 #include "AliSysInfo.h"
41 Double_t xminTrack[9], xmaxTrack[9];
43 TString axisName[9],axisTitle[9];
51 axisName[0]=
"delta"; axisTitle[0]=
"#Delta (cm)";
52 binsTrack[0]=60; xminTrack[0]=-0.6; xmaxTrack[0]=0.6;
54 axisName[1]=
"sector"; axisTitle[1]=
"Sector Number";
55 binsTrack[1]=180; xminTrack[1]=0; xmaxTrack[1]=18;
57 axisName[2]=
"localX"; axisTitle[2]=
"x (cm)";
58 binsTrack[2]=53; xminTrack[2]=85.; xmaxTrack[2]=245.;
61 axisName[3]=
"kZ"; axisTitle[3]=
"dz/dx";
62 binsTrack[3]=36; xminTrack[3]=-1.8; xmaxTrack[3]=1.8;
64 THnSparse * fClusterDelta[2]={0,0};
65 fClusterDelta[0] =
new THnSparseS(
"testFull",
"testFull", 4, binsTrack,xminTrack, xmaxTrack);
66 for (Int_t iter=0; iter<niter; iter++){
68 fClusterDelta[1] =
new THnSparseS(
"testM",
"testM", 4, binsTrack,xminTrack, xmaxTrack);
70 for (Int_t ipoint=0; ipoint<nsize; ipoint++){
71 Double_t x[4]={0,0,0,0};
72 x[0]=gRandom->BreitWigner(0,0.2);
73 x[1]=gRandom->Rndm()*18;
74 x[2]=85+gRandom->Rndm()*(245.-85.);
75 x[3]=-1.8+gRandom->Rndm()*(3.6);
76 fClusterDelta[0]->Fill(x);
77 fClusterDelta[1]->Fill(x);
79 TFile
f(Form(
"testSparse_%d.root",iter),
"recreate");
80 fClusterDelta[0]->Write();
82 TFile f2(Form(
"testSparse2_%d.root",iter),
"recreate");
83 fClusterDelta[1]->Write();
85 Int_t bins0=fClusterDelta[0]->GetNbins()/1000;
86 Int_t bins1=fClusterDelta[1]->GetNbins()/1000;
87 Int_t n0=Int_t(fClusterDelta[0]->GetEntries()/1000);
88 Int_t n1=Int_t(fClusterDelta[1]->GetEntries()/1000);
89 printf(
"iter=%d\t%d\t%d\t%d\t%d\n",iter, bins0, bins1, n0,n1);
90 AliSysInfo::AddStamp(Form(
"iter%d",iter), iter,bins0,bins1);
91 delete fClusterDelta[1];
94 gSystem->Exec(
"cp syswatch.log syswatchFill.log");
95 TFile
f(
"syswatchFill.root",
"recreate");
96 tree->Write(
"sparse");
103 AliSysInfo::AddStamp(
"start", 0,0,0);
104 for (Int_t i=0; i<nmax; i++){
105 TFile
f(Form(
"testSparse_%d.root",i));
106 AliSysInfo::AddStamp(Form(
"open%d",i), i,0,0);
107 THnSparse * his0 = (THnSparse*)f.Get(
"testFull");
109 AliSysInfo::AddStamp(Form(
"read%d",i), i,1,0);
110 Int_t bins0=his0->GetNbins()/1000;
111 Int_t n0=Int_t(his0->GetEntries()/1000);
112 printf(
"iter=%d\t%d\t%d\n",i, bins0, n0);
113 AliSysInfo::AddStamp(Form(
"nbins%d",i), i,2,bins0);
114 AliSysInfo::AddStamp(Form(
"entries%d",i), i,3,n0);
116 AliSysInfo::AddStamp(Form(
"delete%d",i), i,4,0);
120 gSystem->Exec(
"cp syswatch.log syswatchRead.log");
121 TFile
f(
"syswatchRead.root",
"recreate");
122 tree->Write(
"sparse");
130 THnSparse * hisA[nmerge];
131 AliSysInfo::AddStamp(
"start", 0,0,0);
132 for (Int_t i=0; i<nmax; i++){
133 TFile
f(Form(
"testSparse2_%d.root",i));
134 AliSysInfo::AddStamp(Form(
"open%d",i), i,0,0);
135 THnSparse * his0 = (THnSparse*)f.Get(
"testM");
137 AliSysInfo::AddStamp(Form(
"read%d",i), i,1,0);
140 for (Int_t im=0; im<nmerge; im++) hisA[im]=(THnSparse*) hisM->Clone();
144 for (Int_t im=0; im<nmerge; im++) hisA[im]->
Add(hisM);
145 AliSysInfo::AddStamp(Form(
"merge%d",i), i,1,1);
146 Int_t bins0=hisM->GetNbins()/1000;
147 Int_t n0=Int_t(hisM->GetEntries()/1000);
148 printf(
"iter=%d\t%d\t%d\n",i, bins0, n0);
149 AliSysInfo::AddStamp(Form(
"nbins%d",i), i,2,bins0);
150 AliSysInfo::AddStamp(Form(
"entries%d",i), i,3,n0);
152 AliSysInfo::AddStamp(Form(
"delete%d",i), i,4,0);
156 gSystem->Exec(
"cp syswatch.log syswatchMerge.log");
157 TFile
f(
"syswatchMerge.root",
"recreate");
158 tree->Write(
"sparse");
168 treeNew->SetMarkerStyle(25);
169 treeOld->SetMarkerStyle(27);
170 treeNew->SetMarkerColor(2);
171 treeOld->SetMarkerColor(4);
176 Double_t maxT=0, maxM=0;
177 entries=treeOld->Draw(
"deltaT:id0",
"",
"");
178 grTime[0] =
new TGraph(entries, treeOld->GetV2(), treeOld->GetV1());
179 maxT=TMath::Max(maxT,TMath::MaxElement(entries, treeOld->GetV1()));
180 entries=treeNew->Draw(
"deltaT:id0",
"",
"");
181 grTime[1] =
new TGraph(entries, treeNew->GetV2(), treeNew->GetV1());
182 maxT=TMath::Max(maxT,TMath::MaxElement(entries, treeNew->GetV1()));
184 entries=treeOld->Draw(
"VM:id0",
"",
"");
185 grVM[0] =
new TGraph(entries, treeOld->GetV2(), treeOld->GetV1());
186 maxM=TMath::Max(maxM,TMath::MaxElement(entries, treeOld->GetV1()));
187 entries=treeNew->Draw(
"VM:id0",
"",
"");
188 grVM[1] =
new TGraph(entries, treeNew->GetV2(), treeNew->GetV1());
189 maxM=TMath::Max(maxM,TMath::MaxElement(entries, treeNew->GetV1()));
192 grTime[0]->SetMarkerStyle(25);
193 grTime[1]->SetMarkerStyle(27);
194 grTime[0]->SetMarkerColor(2);
195 grTime[1]->SetMarkerColor(4);
196 grTime[0]->Draw(
"alp"); grTime[1]->Draw(
"alp");
197 grTime[1]->SetMaximum(maxT);
198 grTime[1]->Draw(
"alp");
199 grTime[0]->Draw(
"lp");
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void Add(AliMUONVStore &destStore, const AliMUONVStore &srcStore)
TFile f("CalibObjects.root")
void testRead(Int_t nmax=100000)
void testMerge(Int_t nmax, Int_t nmerge=1)
void testSparse(Int_t niter, Int_t nsize)