]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSQADataMaker.cxx
Compilation on Windows/Cygwin
[u/mrichter/AliRoot.git] / ITS / AliITSQADataMaker.cxx
index 1fdc3a3fcf6791c8f616998dd6122c3c062280c1..b5b12c062e859b69d5fdc45d6c8b97c5f9ca4a50 100644 (file)
@@ -33,6 +33,7 @@
 
 // --- AliRoot header files ---
 #include "AliITSQADataMaker.h"
+#include "AliLog.h"
 #include "AliQA.h"
 #include "AliQAChecker.h"
 #include "AliRawReader.h"
 #include "AliITSgeomTGeo.h"
 #include "AliRawReader.h"
 
+
 ClassImp(AliITSQADataMaker)
 
 //____________________________________________________________________________ 
 AliITSQADataMaker::AliITSQADataMaker() : 
   AliQADataMaker(AliQA::GetDetName(AliQA::kITS), "SDD Quality Assurance Data Maker")
 { 
+  fkOnline = kFALSE;
+  fnSDDHistos = 0;
   // ctor 
 }
 
 //____________________________________________________________________________ 
-AliITSQADataMaker::AliITSQADataMaker(Bool_t kMode, Int_t ldc) :
+AliITSQADataMaker::AliITSQADataMaker(Int_t ldc, Bool_t kMode) :
   AliQADataMaker(AliQA::GetDetName(AliQA::kITS), "SDD Quality Assurance Data Maker")
 {
   //ctor used to discriminate OnLine-Offline analysis
   fkOnline = kMode;
   fLDC = ldc; 
+  fnSDDHistos = 0;
 }
 
 //____________________________________________________________________________ 
@@ -81,17 +86,15 @@ AliITSQADataMaker& AliITSQADataMaker::operator = (const AliITSQADataMaker& qac )
 void AliITSQADataMaker::StartOfDetectorCycle() const
 {
   //Detector specific actions at start of cycle
-  cout<<"AliITSQADM::Start of ITS Cycle"<<endl;
+  AliDebug(1,"AliITSQADM::Start of ITS Cycle\n");
 }
 
 //____________________________________________________________________________ 
-void AliITSQADataMaker::EndOfDetectorCycle(AliQA::TASKINDEX task, TList *list)
+void AliITSQADataMaker::EndOfDetectorCycle(AliQA::TASKINDEX task, TObjArray *list)
 {
   // launch the QA checking
-  cout <<"AliITSDM instantiates checker with Run(AliQA::kITS, task, list)" << endl;
-  printf( "AliQA::GetQADataFileName() is :  %s \n",AliQA::GetQADataFileName());
-  printf( "AliQA::GetQARefFileName() is :  %s \n",AliQA::GetQARefFileName());
-  printf( "AliQA::GetQAResultFileName() is :  %s \n",AliQA::GetQAResultFileName());
+  AliDebug(1,"AliITSDM instantiates checker with Run(AliQA::kITS, task, list)\n"); 
+  
   AliQAChecker::Instance()->Run( AliQA::kITS , task, list);
 }
 
@@ -108,162 +111,232 @@ void AliITSQADataMaker::InitRaws()
   
   Int_t lay, lad, det;
   
-  if(fkOnline) cout << "Book Online Histograms" <<endl;
-  else cout << "Book Offline Histograms" <<endl;
-  Char_t *hname[3][2 * fgknSDDmodules] ;
-  for(Int_t moduleSDD =0; moduleSDD<fgknSDDmodules; moduleSDD++){
-    for(Int_t iside=0;iside<fgknSide;iside++){
-      Int_t index1 = moduleSDD * 2 + iside ;
-      for(Int_t i=0; i<3; i++) hname[i][index1]= new Char_t[50];
-      sprintf(hname[0][index1],"chargeMap%dSide%d",moduleSDD,iside);
-      sprintf(hname[1][index1],"Total Charge, module number %d , Side%d",moduleSDD,iside);
-      sprintf(hname[2][index1],"hmonoDMap%dSide%d",moduleSDD,iside);
-      fModuleChargeMap[index1] = new TH2D(hname[0][index1],hname[1][index1],256,-0.5,255.5,256,-0.5,255.5);
-      fmonoD[index1] = new TH1D(hname[2][index1],hname[2][index1],256,-0.5,255.5);
-    }
+  if(fkOnline) {
+    AliInfo("Book Online Histograms\n");
+  }
+  else {
+    AliInfo("Book Offline Histograms\n ");
   }
 
   TH1F *h0 = new TH1F("ModPattern","Modules pattern",fgknSDDmodules,-0.5,259.5); 
   Add2RawsList(h0,0);
+  fnSDDHistos++;
   TH1F *h1 = new TH1F("ModPatternL3","Modules pattern L3",14,0.5,14.5);  
   Add2RawsList(h1,1);
+  fnSDDHistos++;
   TH1F *h2 = new TH1F("ModPatternL4","Modules pattern L4",22,0.5,22.5);  
   Add2RawsList(h2,2);
+  fnSDDHistos++;
 
   Char_t *hname0[fgkLADDonLAY3] ; 
   TH1D *h3[fgkLADDonLAY3] ; 
   for(Int_t i=1; i<=fgkLADDonLAY3; i++) {
-    hname0[i] = new Char_t[20];
-    sprintf(hname0[i],"ModPattern_L3_%d",i);
-    h3[i] = new TH1D(hname0[i],hname0[i],6,0.5,6.5);
-    Add2RawsList(h3[i],i-1+3);
+    hname0[i-1] = new Char_t[20];
+    sprintf(hname0[i-1],"ModPattern_L3_%d",i);
+    h3[i-1] = new TH1D(hname0[i-1],hname0[i-1],6,0.5,6.5);
+    Add2RawsList(h3[i-1],i-1+3);
+    fnSDDHistos++;
   }
 
   Char_t *hname1[fgkLADDonLAY4] ;
   TH1D *h4[fgkLADDonLAY4] ; 
   for(Int_t i=1; i<=fgkLADDonLAY4; i++) {
-    hname1[i] = new Char_t[20];
-    sprintf(hname1[i],"ModPattern_L4_%d",i);
-    h4[i] = new TH1D(hname1[i],hname1[i],8,0.5,8.5);
-    Add2RawsList(h4[i],i-1+17);  
+    hname1[i-1] = new Char_t[20];
+    sprintf(hname1[i-1],"ModPattern_L4_%d",i);
+    h4[i-1] = new TH1D(hname1[i-1],hname1[i-1],8,0.5,8.5);
+    Add2RawsList(h4[i-1],i-1+17);  
+    fnSDDHistos++;
   }
 
-  Char_t *hname2[fgknSDDmodules*2] ;
-  TH1D *h5[fgknSDDmodules*2] ; 
-  for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
-    for(Int_t iside=0; iside<fgknSide; iside++){
-      Int_t index1 = moduleSDD * 2 + iside;
-      hname2[index1] = new Char_t[50];
-      sprintf(hname2[index1],"ProjYMap%dSide%d",moduleSDD,iside);
-      h5[index1] = new TH1D(hname2[index1],hname2[index1],256,-0.5,255.5);
-      Add2RawsList(h5[index1],index1+39);
+  if(fkOnline) {
+       Int_t indexlast = 0;
+    Char_t *hname2[fgknSDDmodules*2] ;
+    TH1D *h5[fgknSDDmodules*2] ; 
+    Int_t index1 = 0;
+    for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
+         if((moduleSDD >= 0 && moduleSDD < 36) || (moduleSDD >= 84 && moduleSDD < 180)) {
+               for(Int_t iside=0; iside<fgknSide; iside++){
+                       //Int_t index1 = moduleSDD * 2 + iside;
+                       hname2[index1] = new Char_t[50];
+                       AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
+                        sprintf(hname2[index1],"ProjYMap_L%d_%d_%d_%d",lay,lad,det,iside);
+
+                       h5[index1] = new TH1D(hname2[index1],hname2[index1],256,-0.5,255.5);
+                       Add2RawsList(h5[index1],index1+39);
+                       fnSDDHistos++;
+                       index1++;
+                       indexlast = index1+39;
+               }
+         }
     }
-  }
-  Char_t *hname3[fgknSDDmodules*8] ;
-  TH1D *h6[fgknSDDmodules*8] ; 
-  for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
-    for(Int_t iside=0; iside<fgknSide; iside++){
-      Int_t index1 = moduleSDD * 2 + iside;
-      for(Int_t htype=0; htype<4; htype++){
-       hname3[index1 + htype *2 * fgknSDDmodules] = new Char_t[50]; 
-      } 
-      AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
-      sprintf(hname3[index1 ],"CountsVSAnode_L%d_%d_%d_%d",lay,lad,det,iside);
-      sprintf(hname3[index1 + 1 *2* fgknSDDmodules],"ChargeVSAnode_L%d_%d_%d_%d",lay,lad,det,iside);
-      sprintf(hname3[index1 + 2 *2* fgknSDDmodules],"CountsVSTbin_L%d_%d_%d_%d",lay,lad,det,iside);
-      sprintf(hname3[index1 + 3 *2* fgknSDDmodules],"ChargeVSTbin_L%d_%d_%d_%d",lay,lad,det,iside);
-
-      for(Int_t htype=0; htype<4; htype++){   
-       Int_t index1 = moduleSDD * 2 + iside;
-       Int_t indextot = index1 + htype* 2 * fgknSDDmodules;
-       h6[indextot] = new TH1D(hname3[indextot],hname3[indextot],256,-0.5,255.5);
-       Add2RawsList(h6[indextot],39 + fgknSDDmodules*2 + indextot);
-      } 
+    
+    Char_t *hname3[fgknSDDmodules*8] ;
+    TH1D *h6[fgknSDDmodules*8] ; 
+       Int_t indextot = 0;
+       Int_t indexlast1 = 0;
+       for(Int_t htype=0; htype<4; htype++){
+      for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
+               if((moduleSDD >= 0 && moduleSDD < 36) || (moduleSDD >= 84 && moduleSDD < 180)) {
+                 for(Int_t iside=0; iside<fgknSide; iside++){
+                       //Int_t index1 = moduleSDD*2 + iside;
+                       hname3[indextot] = new Char_t[50]; 
+                       AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
+                       if(htype == 0) sprintf(hname3[indextot],"CountsVSAnode_L%d_%d_%d_%d",lay,lad,det,iside);
+                       if(htype == 1) sprintf(hname3[indextot],"ChargeVSAnode_L%d_%d_%d_%d",lay,lad,det,iside);
+                       if(htype == 2) sprintf(hname3[indextot],"CountsVSTbin_L%d_%d_%d_%d",lay,lad,det,iside);
+                       if(htype == 3) sprintf(hname3[indextot],"ChargeVSTbin_L%d_%d_%d_%d",lay,lad,det,iside);
+                       h6[indextot] = new TH1D(hname3[indextot],hname3[indextot],256,-0.5,255.5);
+                       Add2RawsList(h6[indextot],indexlast + indextot);
+                       fnSDDHistos++;
+                       indextot++;
+                       indexlast1 = indexlast + indextot;
+                 }
+               }
+      }
     }
+    
+       Int_t indexlast2 = 0;
+    Char_t *hname4[fgknSDDmodules*2];
+    TH2D *h7[fgknSDDmodules*2] ;
+       index1 = 0;
+    for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
+               if((moduleSDD >= 0 && moduleSDD < 36) || (moduleSDD >= 84 && moduleSDD < 180)) {
+                 for(Int_t iside=0; iside<fgknSide; iside++){
+                       //Int_t index1 = moduleSDD * 2 + iside;
+                       AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
+                       hname4[index1] = new Char_t[50]; 
+                       sprintf(hname4[index1],"Anode_vs_Charge_L%d_%d_%d_%d",lay,lad,det,iside);
+                       h7[index1] = new TH2D(hname4[index1],hname4[index1],fgknSDDmodules*2,-0.5,-0.5+fgknSDDmodules*2,256,0.5,256.5);
+                       Add2RawsList(h7[index1],indexlast1 + index1);
+                       fnSDDHistos++;
+                       index1++;
+                       indexlast2 = indexlast1 + index1;
+                 }
+               }
+       }
+
+    Char_t *hname[3][2 * fgknSDDmodules] ;
+    index1 = 0;
+    for(Int_t moduleSDD =0; moduleSDD<fgknSDDmodules; moduleSDD++){
+         if((moduleSDD >= 0 && moduleSDD < 36) || (moduleSDD >= 84 && moduleSDD < 180)) {
+               for(Int_t iside=0;iside<fgknSide;iside++){
+                       //Int_t index1 = moduleSDD * 2 + iside ;
+                       for(Int_t i=0; i<3; i++) hname[i][index1]= new Char_t[50];
+                       AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
+                       sprintf(hname[0][index1],"chargeMap_L%d_%d_%d_%d",lay,lad,det,iside);
+                       sprintf(hname[1][index1],"TotalCharge_L%d_%d_%d_%d",lay,lad,det,iside);
+                       sprintf(hname[2][index1],"hmonoDMap_L%d_%d_%d_%d",lay,lad,det,iside);
+                       fModuleChargeMap[index1] = new TH2D(hname[0][index1],hname[1][index1],256,-0.5,255.5,256,-0.5,255.5);
+                       Add2RawsList(fModuleChargeMap[index1],indexlast2 + index1);
+                       fnSDDHistos++;
+                       fmonoD[index1] = new TH1D(hname[2][index1],hname[2][index1],256,-0.5,255.5);
+                       index1++;
+               }
+         }
+       }
   }
-
   
-  Char_t *hname4[fgknSDDmodules*2];
-  TH2D *h7[fgknSDDmodules*2] ;
-  for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
-    for(Int_t iside=0; iside<fgknSide; iside++){
-      Int_t index1 = moduleSDD * 2 + iside;
-      AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
-      hname4[index1] = new Char_t[50]; 
-      sprintf(hname4[index1],"Anode_vs_Charge_L%d_%d_%d_%d",lay,lad,det,iside);
-      h7[index1] = new TH2D(hname4[index1],hname4[index1],fgknSDDmodules*2,-0.5,-0.5+fgknSDDmodules*2,256,0.5,256.5);
-      Add2RawsList(h7[index1],2639 + index1);
-    }
-  }
-
-
+  AliDebug(1,Form("%d SDD histograms booked\n",fnSDDHistos));
 }
 
 //____________________________________________________________________________
 void AliITSQADataMaker::MakeRaws(AliRawReader* rawReader)
 { 
   //Fills Raw QA list of histos
-
-  cout<<"entering MakeRaws" <<endl;
-  rawReader->RequireHeader(kFALSE);               
-  rawReader->SelectEvents(7);                    
+  if(rawReader->GetType() != 7) return;  // skips non physical triggers
+    Int_t index=0;
+    if(fkOnline) {
+        for(Int_t moduleSDD =0; moduleSDD<fgknSDDmodules; moduleSDD++){
+         if((moduleSDD >= 0 && moduleSDD < 36) || (moduleSDD >= 84 && moduleSDD < 180)) {
+               for(Int_t iside=0;iside<fgknSide;iside++) {
+                       if(fnSDDHistos > 39+12 * 132 + index) GetRawsData(39+12 * 132 + index)->Reset();
+                       index++;
+               }
+         }             
+       }
+    }
+  AliDebug(1,"entering MakeRaws\n");
+  //  rawReader->SelectEvents(7);                    
   rawReader->SelectEquipment(17,fgkeqOffset+1,fgkeqOffset + fgkDDLidRange); 
   rawReader->Reset();                         
   AliITSRawStreamSDD s(rawReader); 
   Int_t lay, lad, det; 
 
   Int_t cnt = 0;
-  while(s.Next()){
+  while(s.Next()) {
     Int_t iddl = rawReader->GetDDLID() - fgkDDLIDshift;
     Int_t isddmod = s.GetModuleNumber(iddl,s.GetCarlosId());
-    //if(isddmod >= fgkmodoffset && isddmod<fgkmodoffset+fgknSDDmodules ) {
-      Int_t coord1 = s.GetCoord1();
-      Int_t coord2 = s.GetCoord2();
-      Int_t signal = s.GetSignal();
-      Int_t moduleSDD = isddmod - fgkmodoffset;
-      GetRawsData(0)->Fill(moduleSDD); 
-
-      AliITSgeomTGeo::GetModuleId(isddmod, lay, lad, det);
-      //printf("modnumb %d, lay %d, lad %d, det %d \n",isddmod, lay, lad, det);
-      Int_t ioffset = 3;
-      Int_t iorder = 1;
-      if(lay==4) { 
-       ioffset += 14;
-       iorder = 2;   
-      } 
-      GetRawsData(iorder)->Fill(lad);
-      GetRawsData(ioffset+lad-1)->Fill(det); //-1 because ladder# starts from 1    
-
-      Short_t iside = s.GetChannel();
-      Int_t index1 = moduleSDD * 2 + iside;
-      //      if(s.IsCompletedModule()) continue; 
-      fModuleChargeMap[index1]->Fill(coord2, coord1, signal);
-       
-      // ITS.QA.1209.0.root
-      GetRawsData(39+ 2 * fgknSDDmodules + index1)->Fill(coord1); //coord1=anode COvsAN ok
-      GetRawsData(39+ 4 * fgknSDDmodules + index1)->Fill(coord1,signal);  //CHvsAN no
-      GetRawsData(39+ 6 * fgknSDDmodules + index1)->Fill(coord2);      //COvsTB no
-      GetRawsData(39+ 8 * fgknSDDmodules + index1)->Fill(coord2,signal); //CHvsTB ok
-      
-      GetRawsData(2639+index1)->Fill(signal,coord1);
-    //}
+    if(s.IsCompletedModule()) {
+      AliDebug(1,Form("IsCompletedModule == KTRUE\n"));
+      continue;
+    } 
+    Int_t coord1 = s.GetCoord1();
+    Int_t coord2 = s.GetCoord2();
+    Int_t signal = s.GetSignal();
+    Int_t moduleSDD = isddmod - fgkmodoffset;
+    if(moduleSDD < 0 || moduleSDD>fgknSDDmodules+fgkmodoffset) {
+      AliDebug(1,Form( "Module SDD = %d, resetting it to 1 \n",moduleSDD));
+      moduleSDD = 1;
+    }
+    GetRawsData(0)->Fill(moduleSDD); 
+    
+    AliITSgeomTGeo::GetModuleId(isddmod, lay, lad, det);
+    //printf("modnumb %d, lay %d, lad %d, det %d \n",isddmod, lay, lad, det);
+    Int_t ioffset = 3;
+    Int_t iorder = 1;
+    if(lay==4) { 
+      ioffset += 14;
+      iorder = 2;   
+    } 
+    GetRawsData(iorder)->Fill(lad);
+    GetRawsData(ioffset+lad-1)->Fill(det); //-1 because ladder# starts from 1    
+    
+    Short_t iside = s.GetChannel();
+       Int_t activeModule = moduleSDD;
+       if(moduleSDD > 35) activeModule -= 48;
+    Int_t index1 = activeModule * 2 + iside;
+    
+    if(index1<0){
+      AliDebug(1,Form("Wrong index number %d - patched to 0\n",index1));
+      index1 = 0;
+    }
+    
+    if(fkOnline) {
+      if(fnSDDHistos > 39+12 * 132 + index1) {
+        GetRawsData(39+ 2 * 132 + index1)->Fill(coord1); 
+        GetRawsData(39+ 4 * 132 + index1)->Fill(coord1,signal); 
+        GetRawsData(39+ 6 * 132 + index1)->Fill(coord2);       
+        GetRawsData(39+ 8 * 132 + index1)->Fill(coord2,signal); 
+        GetRawsData(39+10 * 132 + index1)->Fill(signal,coord1);
+        ((TH2D *)(GetRawsData(39+12 * 132 + index1)))->Fill(coord2, coord1, signal);
+      }
+    }
     cnt++;
-    if(!(cnt%10000)) cout << cnt << " raw digits read" << endl;
+    if(!(cnt%10000)) AliDebug(1,Form(" %d raw digits read",cnt));
   }
-  cout << "Event completed, " << cnt << " raw digits read" << endl;
-
-  for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
-    for(Int_t iside=0; iside<fgknSide; iside++){
-      Int_t index1 = moduleSDD * 2 + iside;
-      //if(s.IsCompletedModule()) continue;
-      fmonoD[index1] = fModuleChargeMap[index1]->ProjectionY();
-      Int_t nBins = 256;
-      for(Int_t bin=0; bin<nBins; bin++){
-       GetRawsData(index1+39)->Fill(bin,fmonoD[index1]->GetBinContent(bin+1) );
-      }
+  AliDebug(1,Form("Event completed, %d raw digits read",cnt));
+  
+  if(fkOnline) {
+    Int_t nBins = 256;
+    for(Int_t moduleSDD=0; moduleSDD<fgknSDDmodules; moduleSDD++){
+               if((moduleSDD >= 0 && moduleSDD < 36) || (moduleSDD >= 84 && moduleSDD < 180)) {
+                 for(Int_t iside=0; iside<fgknSide; iside++){
+                       Int_t activeModule = moduleSDD;
+                       if(moduleSDD > 35) activeModule -= 48;
+                       Int_t index1 = activeModule * 2 + iside;
+                       if(fnSDDHistos > 39 + 2 * 132 + index1) {
+                         fmonoD[index1] = ((TH2D *) (GetRawsData(39+12 * 132 + index1)))->ProjectionY();
+                         for(Int_t bin=0; bin<nBins; bin++) GetRawsData(index1+39)->Fill(bin,fmonoD[index1]->GetBinContent(bin+1) );
+                       }  
+                 }
+               }
     }
-  }  
-
+    for(Int_t i=0; i<fnSDDHistos; i++){
+      Int_t entries = static_cast<Int_t>(GetRawsData(i)->GetEntries());
+      if(entries != 0)
+       AliDebug(1,Form("histo %d, name %s , entries %d ",i,GetRawsData(i)->GetName(),entries));
+    }
+  }
 }
 
 
@@ -305,7 +378,7 @@ void AliITSQADataMaker::InitRecPoints()
 void AliITSQADataMaker::MakeRecPoints(TTree * clustersTree)
 {
   // makes data from RecPoints
-  
+  /*  
   TBranch *branchRecP = clustersTree->GetBranch("ITSRecPoints");
   if (!branchRecP) { 
     AliError("can't get the branch with the ITS clusters !");
@@ -323,5 +396,7 @@ void AliITSQADataMaker::MakeRecPoints(TTree * clustersTree)
   }
   recpoints->Delete();
   delete recpoints;
-  
+  */
 }
+
+