]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSQASSDDataMakerSim.cxx
In Open() and GotoEvent() try the ESD operations first, fallback to run-loader.
[u/mrichter/AliRoot.git] / ITS / AliITSQASSDDataMakerSim.cxx
index d94635e63779b2f38ef0955377061cdc3146aecc..369ec3c399fc591445509cd5015963b412408949 100644 (file)
 //  -------------------------------------------------------------\r
 //  W. Ferrarese + P. Cerello Feb 2008\r
 //  INFN Torino\r
+//  SSD QA part: P. Christakoglou - NIKHEF/UU\r
 \r
 // --- ROOT system ---\r
 #include <TTree.h>\r
+#include <TH1.h>\r
+#include <TH2.h>\r
+#include <TMath.h>\r
 // --- Standard library ---\r
 \r
 // --- AliRoot header files ---\r
+#include "AliITS.h"\r
+#include "AliITSmodule.h"\r
+#include "AliITShit.h"\r
+#include "AliITSdigit.h"\r
+#include "AliITSpListItem.h"\r
+#include "AliRun.h"\r
 #include "AliITSQADataMakerSim.h"\r
 #include "AliITSQASSDDataMakerSim.h"\r
 #include "AliLog.h"\r
@@ -41,12 +51,10 @@ ClassImp(AliITSQASSDDataMakerSim)
 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(AliITSQADataMakerSim *aliITSQADataMakerSim) :\r
 TObject(),\r
 fAliITSQADataMakerSim(aliITSQADataMakerSim),\r
-fSSDhDigits(0),\r
-fSSDhSDigits(0),\r
-fSSDhHits(0),\r
-fDigitsOffset(0),\r
-fSDigitsOffset(0),\r
-fHitsOffset(0)\r
+fSSDhTask(0),\r
+fGenOffsetH(0),\r
+fGenOffsetS(0), \r
+fGenOffsetD(0) \r
 {\r
   //ctor used to discriminate OnLine-Offline analysis   \r
 }\r
@@ -55,12 +63,10 @@ fHitsOffset(0)
 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(const AliITSQASSDDataMakerSim& qadm) :\r
 TObject(),\r
 fAliITSQADataMakerSim(qadm.fAliITSQADataMakerSim),\r
-fSSDhDigits(qadm.fSSDhDigits),\r
-fSSDhSDigits(qadm.fSSDhSDigits),\r
-fSSDhHits(qadm.fSSDhHits),\r
-fDigitsOffset(qadm.fDigitsOffset),\r
-fSDigitsOffset(qadm.fSDigitsOffset),\r
-fHitsOffset(qadm.fHitsOffset)\r
+fSSDhTask(qadm.fSSDhTask),\r
+fGenOffsetH(qadm.fGenOffsetH), \r
+fGenOffsetS(qadm.fGenOffsetS), \r
+fGenOffsetD(qadm.fGenOffsetD) \r
 {\r
   //copy ctor \r
   fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; \r
@@ -68,8 +74,7 @@ fHitsOffset(qadm.fHitsOffset)
   }\r
 \r
 //__________________________________________________________________\r
-AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac )\r
-{\r
+AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) {\r
   // Equal operator.\r
   this->~AliITSQASSDDataMakerSim();\r
   new(this) AliITSQASSDDataMakerSim(qac);\r
@@ -77,87 +82,199 @@ AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDD
 }\r
 \r
 //____________________________________________________________________________ \r
-void AliITSQASSDDataMakerSim::StartOfDetectorCycle()\r
-{\r
+void AliITSQASSDDataMakerSim::StartOfDetectorCycle() {\r
   //Detector specific actions at start of cycle\r
   AliDebug(1,"AliITSQADM::Start of SSD Cycle\n");\r
 }\r
 \r
 //____________________________________________________________________________ \r
-void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t /*task*/, TObjArray* /*list*/)\r
-{\r
+void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray* list) {\r
   // launch the QA checking\r
   AliDebug(1,"AliITSDM instantiates checker with Run(AliQA::kITS, task, list)\n"); \r
   \r
-  //AliQAChecker::Instance()->Run( AliQA::kITS , task, list);\r
+  AliQAChecker::Instance()->Run( AliQA::kITS , task, list);\r
 }\r
 \r
 //____________________________________________________________________________ \r
-void AliITSQASSDDataMakerSim::InitDigits()\r
-{ \r
+void AliITSQASSDDataMakerSim::InitDigits() { \r
   // Initialization for DIGIT data - SSD -\r
-  fDigitsOffset = (fAliITSQADataMakerSim->fDigitsQAList)->GetEntries();\r
+  fGenOffsetD = (fAliITSQADataMakerSim->fDigitsQAList)->GetEntries();\r
 \r
   // custom code here\r
-\r
-  //fSSDhDigits must be incremented by one unit every time a histogram is ADDED to the QA List\r
-\r
-  AliDebug(1,Form("%d SSD Digits histograms booked\n",fSSDhDigits));\r
+  TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule",\r
+                                 ";SSD Module Number;N_{DIGITS}",\r
+                                 1698,499.5,2197.5);  \r
+  fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule,\r
+                                       fGenOffsetD + 0);\r
+  fSSDhTask += 1;\r
+  TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip",\r
+                                      ";N_{Strip};N_{Module}",\r
+                                      1540,0,1540,1698,499.5,2197.5);  \r
+  fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip,\r
+                                       fGenOffsetD + 1);\r
+  fSSDhTask += 1;\r
+\r
+  AliDebug(1,Form("%d SSD Digits histograms booked\n",fSSDhTask));\r
 \r
 }\r
 \r
-\r
 //____________________________________________________________________________\r
-void AliITSQASSDDataMakerSim::MakeDigits(TTree * /*digits*/)\r
-{ \r
+void AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) { \r
   // Fill QA for DIGIT - SSD -\r
+  AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
+  fITS->SetTreeAddress();\r
+  TClonesArray *iSSDdigits  = fITS->DigitsAddress(2);\r
+  for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
+    iSSDdigits->Clear();\r
+    digits->GetEvent(iModule);    \r
+    Int_t ndigits = iSSDdigits->GetEntries();\r
+    fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD + 0)->Fill(iModule,ndigits);\r
+    if(ndigits != 0)\r
+      AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits));\r
\r
+    for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {\r
+      AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit);\r
+      Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips;\r
+      ((TH2F *)fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD + 1))->Fill(fStripNumber,iModule,dig->GetSignal());\r
+    }//digit loop\r
+  }//module loop\r
 }\r
 \r
-\r
-\r
-\r
 //____________________________________________________________________________ \r
-void AliITSQASSDDataMakerSim::InitSDigits()\r
-{ \r
+void AliITSQASSDDataMakerSim::InitSDigits() { \r
   // Initialization for SDIGIT data - SSD -\r
-  fSDigitsOffset = (fAliITSQADataMakerSim->fSDigitsQAList)->GetEntries();\r
+  fGenOffsetS = (fAliITSQADataMakerSim->fSDigitsQAList)->GetEntries();\r
 \r
   // custom code here\r
-\r
-  //fSSDhSDigits must be incremented by one unit every time a histogram is ADDED to the QA List\r
-\r
-  AliDebug(1,Form("%d SSD SDigits histograms booked\n",fSSDhSDigits));\r
-\r
+  TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule",\r
+                                 ";SSD Module Number;N_{SDIGITS}",\r
+                                 1698,499.5,2197.5);  \r
+  fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule,\r
+                                        fGenOffsetS + 0);\r
+  fSSDhTask += 1;  \r
+\r
+  AliDebug(1,Form("%d SSD SDigits histograms booked\n",fSSDhTask));\r
 }\r
 \r
-\r
 //____________________________________________________________________________\r
-void AliITSQASSDDataMakerSim::MakeSDigits(TTree * /*sdigits*/)\r
-{ \r
+void AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) { \r
   // Fill QA for SDIGIT - SSD -\r
+  static TClonesArray iSSDEmpty("AliITSpListItem",10000);\r
+  iSSDEmpty.Clear();\r
+  TClonesArray *iSSDsdigits = &iSSDEmpty;\r
+\r
+  AliInfo(Form("Trying to access the sdigits histogram: %d\n",fGenOffsetS));\r
+\r
+  TBranch *brchSDigits = sdigits->GetBranch("ITS");\r
+  brchSDigits->SetAddress(&iSSDsdigits);\r
+  for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
+    iSSDsdigits->Clear();\r
+    sdigits->GetEvent(iModule);    \r
+    Int_t ndigits = iSSDsdigits->GetEntries();\r
+    fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS + 0)->Fill(iModule,ndigits);\r
+    if(ndigits != 0)\r
+      AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits));\r
+\r
+    for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {\r
+      AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit);\r
+      dig=0;\r
+    }//digit loop\r
+  }//module loop\r
 }\r
 \r
-\r
-\r
-\r
-\r
 //____________________________________________________________________________ \r
-void AliITSQASSDDataMakerSim::InitHits()\r
-{ \r
+void AliITSQASSDDataMakerSim::InitHits() { \r
   // Initialization for HITS data - SSD -\r
-  fHitsOffset = (fAliITSQADataMakerSim->fHitsQAList)->GetEntries();\r
+  fGenOffsetH = (fAliITSQADataMakerSim->fHitsQAList)->GetEntries();\r
 \r
   // custom code here\r
-\r
-  //fSSDhHits must be incremented by one unit every time a histogram is ADDED to the QA List\r
-\r
-  AliDebug(1,Form("%d SSD Hits histograms booked\n",fSSDhHits));\r
-\r
+  TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule",\r
+                                 ";SDD Module Number;N_{HITS}",\r
+                                 1698,499.5,2197.5); \r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule,\r
+                                     fGenOffsetH + 0);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX",\r
+                                  ";x [cm];Entries",\r
+                                  1000,-50.,50.);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX,\r
+                                     fGenOffsetH + 1);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY",\r
+                                  ";y [cm];Entries",\r
+                                  1000,-50.,50.);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY,\r
+                                     fGenOffsetH + 2);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ",\r
+                                  ";z [cm];Entries",\r
+                                  1000,-60.,60.);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ,\r
+                                     fGenOffsetH + 3);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX",\r
+                                 ";x [cm];Entries",\r
+                                 1000,-4.,4.);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX,\r
+                                     fGenOffsetH + 4);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY",\r
+                                 ";y [cm];Entries",\r
+                                 1000,-0.1,0.1);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY,\r
+                                     fGenOffsetH + 5);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ",\r
+                                 ";z [cm];Entries",\r
+                                 1000,-4.,4.);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ,\r
+                                     fGenOffsetH + 6);\r
+  fSSDhTask += 1;\r
+  TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization",\r
+                                     ";log(dE/dx) [KeV];N_{Hits}",\r
+                                     100,-7,-2);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization,\r
+                                     fGenOffsetH + 7 );\r
+  fSSDhTask += 1;\r
+  TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY",\r
+                                   ";x [cm];y [cm]",\r
+                                   1000,-50.,50.,\r
+                                   1000,-50.,50.);\r
+  fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY,\r
+                                     fGenOffsetH + 8 );\r
+  fSSDhTask += 1;\r
\r
+  AliDebug(1,Form("%d SSD Hits histograms booked\n",fSSDhTask));\r
 }\r
 \r
 \r
 //____________________________________________________________________________\r
-void AliITSQASSDDataMakerSim::MakeHits(TTree * /*hits*/)\r
-{ \r
+void AliITSQASSDDataMakerSim::MakeHits(TTree *hits) { \r
   // Fill QA for HITS - SSD -\r
+  AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
+  fITS->SetTreeAddress();\r
+  Int_t nmodules;\r
+  fITS->InitModules(-1,nmodules);\r
+  fITS->FillModules(hits,0);\r
+  for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
+    AliITSmodule *module = fITS->GetModule(iModule);\r
+    TObjArray *arrHits = module->GetHits();\r
+    Int_t nhits = arrHits->GetEntriesFast();\r
+    if(nhits != 0)\r
+      AliDebug(1,Form("Module: %d - Hits: %d",iModule,nhits));\r
+    for (Int_t iHit = 0; iHit < nhits; iHit++) {\r
+      AliITShit *hit = (AliITShit*) arrHits->At(iHit);\r
+      \r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 0)->Fill(iModule);\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 1)->Fill(hit->GetXG());\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 2)->Fill(hit->GetYG());\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 3)->Fill(hit->GetZG());\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 4)->Fill(hit->GetXL());\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 5)->Fill(hit->GetYL());\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 6)->Fill(hit->GetZL());\r
+      if(hit->GetIonization())\r
+       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 7)->Fill(TMath::Log10(hit->GetIonization()));\r
+      fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 8)->Fill(hit->GetXG(),hit->GetYG());\r
+    }//hit loop\r
+  }//module loop  \r
 }\r