AliRoot Core  a565103 (a565103)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
testSparse.cxx
Go to the documentation of this file.
1 
26 
27 
28 
29 #include "THnSparse.h"
30 #include "TRandom.h"
31 #include "TFile.h"
32 #include "TTree.h"
33 #include "AliSysInfo.h"
34 #include "TSystem.h"
35 #include "TGraph.h"
36 #include "TMath.h"
37 
38 void testSparse(Int_t niter, Int_t nsize){
40 
41  Double_t xminTrack[9], xmaxTrack[9];
42  Int_t binsTrack[9];
43  TString axisName[9],axisTitle[9];
44  //
45  // 0 - delta of interest
46  // 1 - global phi in sector number as float
47  // 2 - local x
48  // 3 - local ky
49  // 4 - local kz
50  //
51  axisName[0]="delta"; axisTitle[0]="#Delta (cm)";
52  binsTrack[0]=60; xminTrack[0]=-0.6; xmaxTrack[0]=0.6;
53  //
54  axisName[1]="sector"; axisTitle[1]="Sector Number";
55  binsTrack[1]=180; xminTrack[1]=0; xmaxTrack[1]=18;
56  //
57  axisName[2]="localX"; axisTitle[2]="x (cm)";
58  binsTrack[2]=53; xminTrack[2]=85.; xmaxTrack[2]=245.;
59  //
60  //
61  axisName[3]="kZ"; axisTitle[3]="dz/dx";
62  binsTrack[3]=36; xminTrack[3]=-1.8; xmaxTrack[3]=1.8;
63  //
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++){
67  gRandom->SetSeed(0);
68  fClusterDelta[1] = new THnSparseS("testM","testM", 4, binsTrack,xminTrack, xmaxTrack);
69 
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);
78  }
79  TFile f(Form("testSparse_%d.root",iter),"recreate");
80  fClusterDelta[0]->Write();
81  f.Close();
82  TFile f2(Form("testSparse2_%d.root",iter),"recreate");
83  fClusterDelta[1]->Write();
84  f2.Close();
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];
92  }
93  TTree * tree =AliSysInfo::MakeTree("syswatch.log");
94  gSystem->Exec("cp syswatch.log syswatchFill.log");
95  TFile f("syswatchFill.root","recreate");
96  tree->Write("sparse");
97  f.Close();
98 }
99 
100 void testRead(Int_t nmax=100000){
102 
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");
108  if (!his0) break;
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);
115  delete his0;
116  AliSysInfo::AddStamp(Form("delete%d",i), i,4,0);
117  }
118  //
119  TTree * tree =AliSysInfo::MakeTree("syswatch.log");
120  gSystem->Exec("cp syswatch.log syswatchRead.log");
121  TFile f("syswatchRead.root","recreate");
122  tree->Write("sparse");
123  f.Close();
124 }
125 
126 void testMerge(Int_t nmax,Int_t nmerge=1){
128 
129  THnSparse * hisM=0;
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");
136  if (!his0) break;
137  AliSysInfo::AddStamp(Form("read%d",i), i,1,0);
138  if (hisM==0) {
139  hisM=his0;
140  for (Int_t im=0; im<nmerge; im++) hisA[im]=(THnSparse*) hisM->Clone();
141  continue;
142  }
143  hisM->Add(his0);
144  for (Int_t im=0; im<nmerge; im++) hisA[im]->Add(hisM);
145  AliSysInfo::AddStamp(Form("merge%d",i), i,1,1); // stamp for merging - id1=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); // stamp for nbins id1=2
150  AliSysInfo::AddStamp(Form("entries%d",i), i,3,n0); // stamp for entries id1=3
151  delete his0;
152  AliSysInfo::AddStamp(Form("delete%d",i), i,4,0); // stamp for delete id1=4
153  }
154  //
155  TTree * tree =AliSysInfo::MakeTree("syswatch.log");
156  gSystem->Exec("cp syswatch.log syswatchMerge.log");
157  TFile f("syswatchMerge.root","recreate");
158  tree->Write("sparse");
159  f.Close();
160 }
161 
162 
163 void DrawDiff(){
165 
166  TTree * treeNew =AliSysInfo::MakeTree("testSparseNew/syswatch.log");
167  TTree * treeOld =AliSysInfo::MakeTree("testSparse/syswatch.log");
168  treeNew->SetMarkerStyle(25);
169  treeOld->SetMarkerStyle(27);
170  treeNew->SetMarkerColor(2);
171  treeOld->SetMarkerColor(4);
172 
173  TGraph *grTime[2];
174  TGraph *grVM[2];
175  Int_t entries=0;
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()));
183 
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()));
190 
191 
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");
200 
201 
202 
203 }
204 
205 
206 /*
207 
208 
209  aliroot -b -q /u/miranov/AliRoot/trunk/TPC/stressTest/testSparse/testSparse.cxx++\(150,1000000\)
210 
211  counter=0
212  while [ $counter -lt 5 ] ; do
213  let counter=$counter+1
214  echo $counter
215  mkdir test$counter
216  cd test$counter
217  bsub -q alice-t3_8h -m batch_dgrid2 --oo out$counter.log aliroot -b -q /u/miranov/AliRoot/trunk/TPC/tmp/testSparse.cxx+\(100,2000000\)
218  cd ../
219  done;
220 
221 */
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void Add(AliMUONVStore &destStore, const AliMUONVStore &srcStore)
Definition: MCHOCCda.cxx:68
TFile f("CalibObjects.root")
void DrawDiff()
Definition: testSparse.cxx:163
void testRead(Int_t nmax=100000)
Definition: testSparse.cxx:100
void testMerge(Int_t nmax, Int_t nmerge=1)
Definition: testSparse.cxx:126
TTree * tree
void testSparse(Int_t niter, Int_t nsize)
Definition: testSparse.cxx:38
void MakeTree()
Definition: CalibQA.C:45