]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSQASDDDataMakerSim.cxx
more suggestions from valgrind
[u/mrichter/AliRoot.git] / ITS / AliITSQASDDDataMakerSim.cxx
index 57e846726261252e42882eab325be6884187cf2d..0d3ac8998b9d7a3f804b17a009e90468f85d8a01 100644 (file)
@@ -59,6 +59,15 @@ fGenOffsetS(0),
 fGenOffsetD(0)\r
 {\r
   //ctor used to discriminate OnLine-Offline analysis   \r
+  fGenOffsetH=  new Int_t[AliRecoParam::kNSpecies];                       \r
+  fGenOffsetS=  new Int_t[AliRecoParam::kNSpecies];                           \r
+  fGenOffsetD=  new Int_t[AliRecoParam::kNSpecies];\r
+  for(Int_t i=0; i<AliRecoParam::kNSpecies; i++) \r
+    {\r
+      fGenOffsetH[i]= 0;\r
+      fGenOffsetS[i]= 0;\r
+      fGenOffsetD[i]= 0;\r
+    } \r
 }\r
 \r
 //____________________________________________________________________________ \r
@@ -75,7 +84,8 @@ fGenOffsetD(qadm.fGenOffsetD)
   //copy ctor \r
   fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; \r
   fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle());\r
-  }\r
+\r
+}\r
 \r
 //__________________________________________________________________\r
 AliITSQASDDDataMakerSim& AliITSQASDDDataMakerSim::operator = (const AliITSQASDDDataMakerSim& qac )\r
@@ -113,22 +123,22 @@ Int_t AliITSQASDDDataMakerSim::InitDigits()
   TH1F* h0=new TH1F("SDD DIGITS Module Pattern","SDD DIGITS Module Pattern",260,239.5,499.5);       //hmod\r
   h0->GetXaxis()->SetTitle("SDD Module Number");\r
   h0->GetYaxis()->SetTitle("# DIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2DigitsList(h0,fGenOffsetD, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2DigitsList(h0,fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhDTask ++;\r
   TH1F* h1=new TH1F("SDD Anode Distribution","SDD DIGITS Anode Distribution",512,-0.5,511.5);      //hanocc\r
   h1->GetXaxis()->SetTitle("Anode Number");\r
   h1->GetYaxis()->SetTitle("# DIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2DigitsList(h1,1+fGenOffsetD, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2DigitsList(h1,1+fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhDTask ++;\r
   TH1F* h2=new TH1F("SDD Tbin Distribution","SDD DIGITS Tbin Distribution",256,-0.5,255.5);      //htbocc\r
   h2->GetXaxis()->SetTitle("Tbin Number");\r
   h2->GetYaxis()->SetTitle("# DIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2DigitsList(h2,2+fGenOffsetD, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2DigitsList(h2,2+fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhDTask ++;\r
   TH1F* h3=new TH1F("SDD ADC Counts Distribution","SDD DIGITS ADC Counts Distribution",200,0.,1024.);          //hsig\r
   h3->GetXaxis()->SetTitle("ADC Value");\r
   h3->GetYaxis()->SetTitle("# DIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2DigitsList(h3,3+fGenOffsetD, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2DigitsList(h3,3+fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhDTask ++;\r
   AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SDD Digits histograms booked\n",fSDDhDTask));\r
   return rv ; \r
@@ -140,10 +150,7 @@ Int_t AliITSQASDDDataMakerSim::MakeDigits(TTree * digits)
 \r
   // Fill QA for DIGIT - SDD -\r
   Int_t rv = 0 ; \r
-  // Check id histograms already created for this Event Specie\r
-  if ( ! fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD) )\r
-    rv = InitDigits() ;\r
\r
+\r
   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
   fITS->SetTreeAddress();\r
   TClonesArray *iITSdigits  = fITS->DigitsAddress(1);\r
@@ -151,15 +158,15 @@ Int_t AliITSQASDDDataMakerSim::MakeDigits(TTree * digits)
     Int_t nmod=i+240;\r
     digits->GetEvent(nmod);\r
     Int_t ndigits = iITSdigits->GetEntries();\r
-    fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD)->Fill(nmod,ndigits);\r
+    fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(nmod,ndigits);\r
     for (Int_t idig=0; idig<ndigits; idig++) {\r
       AliITSdigit *dig=(AliITSdigit*)iITSdigits->UncheckedAt(idig);\r
       Int_t iz=dig->GetCoord1();  // cell number z\r
       Int_t ix=dig->GetCoord2();  // cell number x\r
       Int_t sig=dig->GetSignal();\r
-      fAliITSQADataMakerSim->GetDigitsData(1+fGenOffsetD)->Fill(iz);\r
-      fAliITSQADataMakerSim->GetDigitsData(2+fGenOffsetD)->Fill(ix);\r
-      fAliITSQADataMakerSim->GetDigitsData(3+fGenOffsetD)->Fill(sig);\r
+      fAliITSQADataMakerSim->GetDigitsData(1+fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(iz);\r
+      fAliITSQADataMakerSim->GetDigitsData(2+fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(ix);\r
+      fAliITSQADataMakerSim->GetDigitsData(3+fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(sig);\r
     }\r
   }\r
   return rv ; \r
@@ -177,22 +184,22 @@ Int_t AliITSQASDDDataMakerSim::InitSDigits()
   TH1F* h0=new TH1F("SDD SDIGITS Module Pattern","SDIGITS SDD Module Pattern",260,239.5,499.5);       //hmod\r
   h0->GetXaxis()->SetTitle("SDD Module Number");\r
   h0->GetYaxis()->SetTitle("# SDIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2SDigitsList(h0,fGenOffsetS, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2SDigitsList(h0,fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhSTask ++;\r
   TH1F* h1=new TH1F("SDD Anode Distribution","SDIGITS SDD Anode Distribution",512,-0.5,511.5);      //hanocc\r
   h1->GetXaxis()->SetTitle("Anode Number");\r
   h1->GetYaxis()->SetTitle("# SDIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2SDigitsList(h1,1+fGenOffsetS, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2SDigitsList(h1,1+fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhSTask ++;\r
   TH1F* h2=new TH1F("SDD Tbin Distribution","SDIGITS SDD Tbin Distribution",256,-0.5,255.5);      //htbocc\r
   h2->GetXaxis()->SetTitle("Tbin Number");\r
   h2->GetYaxis()->SetTitle("# SDIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2SDigitsList(h2,2+fGenOffsetS);\r
+  rv = fAliITSQADataMakerSim->Add2SDigitsList(h2,2+fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()]);\r
   fSDDhSTask ++;\r
   TH1F* h3=new TH1F("SDD ADC Counts Distribution","SDIGITS SDD ADC Counts Distribution",200,0.,1024.);          //hsig\r
   h3->GetXaxis()->SetTitle("ADC Value");\r
   h3->GetYaxis()->SetTitle("# SDIGITS");\r
-  rv = fAliITSQADataMakerSim->Add2SDigitsList(h3,3+fGenOffsetS, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2SDigitsList(h3,3+fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhSTask ++;\r
 \r
   AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SDD SDigits histograms booked\n",fSDDhSTask));\r
@@ -204,9 +211,6 @@ Int_t AliITSQASDDDataMakerSim::MakeSDigits(TTree * sdigits)
 { \r
   // Fill QA for SDIGIT - SDD -\r
   Int_t rv = 0 ; \r
-  // Check id histograms already created for this Event Specie\r
-  if ( ! fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS) )\r
-    rv = InitSDigits() ;\r
   \r
    AliITSsegmentationSDD* seg = new AliITSsegmentationSDD();\r
   Int_t nan=seg->Npz();\r
@@ -223,24 +227,26 @@ Int_t AliITSQASDDDataMakerSim::MakeSDigits(TTree * sdigits)
 \r
 \r
   TBranch *brchSDigits = sdigits->GetBranch("ITS");\r
+  static TClonesArray * sdig ; \r
+  if (! sdig )\r
+    sdig = new TClonesArray( "AliITSpListItem",1000 );\r
   for(Int_t id=0; id<260; id++){\r
     Int_t nmod=id+240;\r
-    TClonesArray * sdig = new TClonesArray( "AliITSpListItem",1000 );\r
     brchSDigits->SetAddress( &sdig );\r
     brchSDigits->GetEvent(nmod);\r
     Int_t nsdig=sdig->GetEntries();\r
-    fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS)->Fill(nmod,nsdig);\r
+    fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(nmod,nsdig);\r
     for(Int_t i=0;i<nsdig;i++){\r
       AliITSpListItem *cell=(AliITSpListItem*)sdig->At(i);\r
       Float_t sig=cell->GetSignal();\r
       Int_t idx=cell->GetIndex();\r
       Int_t ia,it;\r
       list->GetCell(idx,ia,it);\r
-      fAliITSQADataMakerSim->GetSDigitsData(1+fGenOffsetS)->Fill(ia);\r
-      fAliITSQADataMakerSim->GetSDigitsData(2+fGenOffsetS)->Fill(it);\r
-      fAliITSQADataMakerSim->GetSDigitsData(3+fGenOffsetS)->Fill(sig);\r
+      fAliITSQADataMakerSim->GetSDigitsData(1+fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(ia);\r
+      fAliITSQADataMakerSim->GetSDigitsData(2+fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(it);\r
+      fAliITSQADataMakerSim->GetSDigitsData(3+fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(sig);\r
     }\r
-    delete sdig;\r
+    sdig->Clear();\r
   }\r
   return rv ; \r
 }\r
@@ -260,22 +266,22 @@ Int_t AliITSQASDDDataMakerSim::InitHits()
   TH1F *h0=new TH1F("SDD HITS Module Pattern","SDD HITS Module Pattern",260,239.5,499.5);  \r
   h0->GetXaxis()->SetTitle("SDD Module Number");\r
   h0->GetYaxis()->SetTitle("# HITS");\r
-  rv = fAliITSQADataMakerSim->Add2HitsList(h0,fGenOffsetH, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2HitsList(h0,fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhHTask ++;\r
   TH1F *h1=new TH1F("SDD HIT lenght along local Y Coord","SDD HIT lenght along local Y Coord",200,0.,350.);\r
   h1->GetXaxis()->SetTitle("HIT lenght (um)");\r
   h1->GetYaxis()->SetTitle("# HITS");\r
-  rv = fAliITSQADataMakerSim->Add2HitsList(h1,1+fGenOffsetH, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2HitsList(h1,1+fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhHTask ++;\r
   TH1F *h2=new TH1F("SDD HIT lenght along local Y Coord - Zoom","SDD HIT lenght along local Y Coord - Zoom",200,250.,350.);\r
   h2->GetXaxis()->SetTitle("HIT lenght (um)");\r
   h2->GetYaxis()->SetTitle("# HITS");\r
-  rv = fAliITSQADataMakerSim->Add2HitsList(h2,2+fGenOffsetH, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2HitsList(h2,2+fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhHTask ++;\r
   TH1F *h3=new TH1F("SDD Deposited Energy Distribution (loc Y > 200um)","SDD HITS Deposited Energy Distribution (loc Y > 200um)",200,0.,350.);\r
   h3->GetXaxis()->SetTitle("ADC counts ");\r
   h3->GetYaxis()->SetTitle("# HITS");\r
-  rv = fAliITSQADataMakerSim->Add2HitsList(h3,3+fGenOffsetH, !expert, image);\r
+  rv = fAliITSQADataMakerSim->Add2HitsList(h3,3+fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()], !expert, image);\r
   fSDDhHTask ++;\r
   AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SDD Hits histograms booked\n",fSDDhHTask));\r
   return rv ; \r
@@ -286,10 +292,7 @@ Int_t AliITSQASDDDataMakerSim::MakeHits(TTree * hits)
 { \r
   // Fill QA for HITS - SDD -\r
   Int_t rv = 0 ; \r
-  // Check id histograms already created for this Event Specie\r
-  if ( ! fAliITSQADataMakerSim->GetHitsData(fGenOffsetH) )\r
-    rv = InitHits() ;\r
-  \r
+\r
    AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
   fITS->SetTreeAddress();\r
   Int_t nmodules;\r
@@ -308,17 +311,17 @@ Int_t AliITSQASDDDataMakerSim::MakeHits(TTree * hits)
     ////printf("--w--AliITSQASDDDataMakerSim::MakeHits  nhits = %d\n",nhits);\r
     for (Int_t iHit=0;iHit<nhits;iHit++) {\r
       AliITShit *hit = (AliITShit*) arrHits->At(iHit);\r
-      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH)->Fill(nmod);\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(nmod);\r
       Double_t xl,yl,zl,xl0,yl0,zl0;\r
       Double_t tof,tof0;\r
       hit->GetPositionL(xl,yl,zl,tof);\r
       hit->GetPositionL0(xl0,yl0,zl0,tof0);\r
       Float_t dyloc=TMath::Abs(yl-yl0)*10000.;\r
-      fAliITSQADataMakerSim->GetHitsData(1+fGenOffsetH)->Fill(dyloc);\r
+      fAliITSQADataMakerSim->GetHitsData(1+fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(dyloc);\r
       Float_t edep=hit->GetIonization()*1000000;\r
       if(dyloc>200.){ \r
-        fAliITSQADataMakerSim->GetHitsData(2+fGenOffsetH)->Fill(edep);\r
-        fAliITSQADataMakerSim->GetHitsData(3+fGenOffsetH)->Fill(dyloc);\r
+        fAliITSQADataMakerSim->GetHitsData(2+fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(edep);\r
+        fAliITSQADataMakerSim->GetHitsData(3+fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()])->Fill(dyloc);\r
       }\r
     }\r
   }\r
@@ -327,17 +330,17 @@ Int_t AliITSQASDDDataMakerSim::MakeHits(TTree * hits)
 \r
 //_______________________________________________________________\r
 \r
-Int_t AliITSQASDDDataMakerSim::GetOffset(AliQAv1::TASKINDEX_t task){\r
+Int_t AliITSQASDDDataMakerSim::GetOffset(AliQAv1::TASKINDEX_t task, Int_t specie){\r
   // Returns histogram offset according to the specified task\r
   Int_t offset=0;\r
   if( task == AliQAv1::kHITS){\r
-    offset=fGenOffsetH;  \r
+    offset=fGenOffsetH[specie];  \r
   }\r
   else if( task == AliQAv1::kSDIGITS) {\r
-    offset=fGenOffsetS;   \r
+    offset=fGenOffsetS[specie];   \r
   }\r
   else if( task == AliQAv1::kDIGITS) {\r
-    offset=fGenOffsetD;   \r
+    offset=fGenOffsetD[specie];   \r
   }\r
   else {\r
     AliInfo("No task has been selected. TaskHisto set to zero.\n");\r
@@ -347,16 +350,16 @@ Int_t AliITSQASDDDataMakerSim::GetOffset(AliQAv1::TASKINDEX_t task){
 }\r
 \r
 //____________________________________________________________________________ \r
-void AliITSQASDDDataMakerSim::SetOffset(AliQAv1::TASKINDEX_t task, Int_t offset){\r
+void AliITSQASDDDataMakerSim::SetOffset(AliQAv1::TASKINDEX_t task, Int_t offset,Int_t specie ){\r
   // Returns histogram offset according to the specified task\r
   if( task == AliQAv1::kHITS){\r
-    fGenOffsetH = offset;  \r
+    fGenOffsetH[specie] = offset;  \r
   }\r
   else if( task == AliQAv1::kSDIGITS) {\r
-    fGenOffsetS = offset;   \r
+    fGenOffsetS[specie] = offset;   \r
   }\r
   else if( task == AliQAv1::kDIGITS) {\r
-    fGenOffsetD = offset;   \r
+    fGenOffsetD[specie] = offset;   \r
   }\r
   else {\r
     AliInfo("No task has been selected. TaskHisto set to zero.\n");\r