Dear Rootters,
I have a problem in using THStack, I think. I would like to draw in a single canvas 60 histograms and group them six by six with different colour for each group. Here is the code I am using:
int main(int argc, char **argv) {
if (argc!=3) {
printf("Usage: analyzerefScan.exe refDataDir runNr\n");
return -1;
}
TString refDataDir = Form("%s",argv[1]); UInt_t runNr = atoi(argv[2]);
UInt_t step = 0;
Float_t pixel100 = 0.0;
Float_t TPeff = 0.0;
UInt_t k = 0;
UInt_t i = 0;
TCanvas *c1 = new TCanvas("c1","Test Pulse efficiency",300,200,600,400); c1->SetFillColor(10);
THStack *hstack = new THStack("hstack","Test Pulse Efficiency"); TH1I *h1[10][6];
AliITSOnlineSPDscan *scanObj[20];
for (UInt_t eq=10; eq<20; eq++) {
TString fileName = Form("%s/%d_SPD_ref_scan_eq_%d",refDataDir.Data(),runNr,eq);
scanObj[eq] = new AliITSOnlineSPDscan(fileName.Data());
for (UInt_t hs=0; hs<6; hs++) {
h1[eq][hs]=new TH1I("h1","h",60,0,60); for (UInt_t chip=0; chip<10; chip++) { for (UInt_t col=0; col<32; col++) { for (UInt_t row=0; row<26; row++) { UInt_t nrHits = scanObj[eq]->GetHits(step,hs,chip,col,row); if (nrHits==100) pixel100++; } } } TPeff=(pixel100 / 8320)*100; h1[eq][hs]->Fill(hs+6*k,TPeff); h1[eq][hs]->SetFillColor(40+k); hstack->Add(h1[eq][hs]); pixel100=0; } k++; delete scanObj[eq];
hstack->Draw("nostack"); hstack->GetXaxis()->SetTitle("Half Staves"); hstack->GetYaxis()->SetTitle("Half Staves Efficiency"); hstack->GetXaxis()->CenterTitle(); hstack->GetYaxis()->CenterTitle(); c1->SaveAs("TPefficiency.C");
return 0;
}
When I run it something strange happens: histograms 6, 12, 18 and so on are not drawn. Why?
thank you very much for your help.
Regards,
Roberta Received on Thu Oct 16 2008 - 12:16:50 CEST
This archive was generated by hypermail 2.2.0 : Thu Oct 16 2008 - 17:50:02 CEST