ROOT logo
void ITSSDDQAChecker(Char_t *filename){

  //-------opens file & histo
  TFile *fileinput = new TFile(filename,"read");
  const Int_t nSDDmodules=260;
  TH2F *ChargeMap;  
  TH2F *CountsMap; 
  TH1F *hModulePattern;
  TH1F *hModuleSidePattern;
  TH1F *mapProjX[2*nSDDmodules];      //260 dx e 260 sx  with A, T, Q
  TH1F *mapProjY[2*nSDDmodules]; 
  TProfile *mapProfX[2*nSDDmodules];
  TProfile *mapProfY[2*nSDDmodules];


  //-------creates module & side histo
  hModulePattern = (TH1F*)fileinput->Get("hModulePattern");
  hModuleSidePattern = (TH1F*)fileinput->Get("hModuleSidePattern");  
  TCanvas *modCanvas = new TCanvas("modCanvas","modCanvas");
  TCanvas *sideCanvas = new TCanvas("sideCanvas","sideCanvas");
  modCanvas->cd();
  hModulePattern->Draw();    
  modCanvas->Update();
  sideCanvas->cd();
  hModuleSidePattern->Draw(); 
  sideCanvas->Update();

  //-------creates Projections & Profiles, one canvas each module
  Char_t *takeChargeMap = new Char_t[50];
  Char_t *takeCountsMap = new Char_t[50];  
  Char_t canvname[100];  
  Char_t canvtitle[100];
 
  TCanvas *moduleCanvas[nSDDmodules];
  gStyle->SetPalette(1);  
  Int_t nActiveModules = 0;
  
  for(Int_t imod=0; imod<nSDDmodules; imod++){   //nSDDmodules
    if(hModulePattern->GetBinContent(imod+1)!=0){
      nActiveModules++;	
      cout<<imod<<" imod" <<endl;
      sprintf(canvtitle,"canvas_module_%d",imod);
      sprintf(canvname,"moduleCanvas[%d]",imod); 
      moduleCanvas[imod]=new TCanvas(canvname,canvtitle);
      moduleCanvas[imod]->Divide(2,6);
      moduleCanvas[imod]->Update();
      
      for(Int_t isid=0;isid<2;isid++){
        Int_t index=2*imod+isid;
	if(hModuleSidePattern->GetBinContent(index+1)!=0){
	  //cout << "Module: " << imod << ", Side: " << isid << ", index: " << index << ", update canvases" << endl;
	  sprintf(takeChargeMap,"chargeMap%d",index);
	  ChargeMap= (TH2F*)fileinput->Get(takeChargeMap);
	  sprintf(takeCountsMap,"countsMap%d",index);
	  CountsMap= (TH2F*)fileinput->Get(takeCountsMap);

	  mapProjX[index] = ChargeMap->ProjectionX();
	  mapProjY[index] = ChargeMap->ProjectionY();
	  mapProjX[index]->GetXaxis()->SetTitle("Time Bin");
	  mapProjX[index]->GetYaxis()->SetTitle("Total Counts");
	  mapProjY[index]->GetXaxis()->SetTitle("Anode");
	  mapProjY[index]->GetYaxis()->SetTitle("Total Counts");
       	
	  mapProfX[index] = ChargeMap->ProfileX();
	  mapProfY[index] = ChargeMap->ProfileY();
	  mapProfX[index]->GetXaxis()->SetTitle("Time Bin");
	  mapProfX[index]->GetYaxis()->SetTitle("Average Counts");
	  mapProfY[index]->GetXaxis()->SetTitle("Anode");
	  mapProfY[index]->GetYaxis()->SetTitle("Average Counts");
	  
	  moduleCanvas[imod] ->cd(1+isid);
	  ChargeMap->Draw("colz"); 
	  moduleCanvas[imod] ->cd(3+isid);
	  CountsMap->Draw("colz");
	  moduleCanvas[imod] ->cd(5+isid);
	  mapProjX[index]->Draw(); 
	  moduleCanvas[imod] ->cd(7+isid);
	  mapProjY[index]->Draw(); 
	  moduleCanvas[imod] ->cd(9+isid);
	  mapProfX[index]->Draw(); 
	  moduleCanvas[imod] ->cd(11+isid);
	  mapProfY[index]->Draw(); 
	  moduleCanvas[imod]->Update();
	  }

      }	
      gSystem->Exec("sleep 0.5");
    }
  } 	

  cout << nActiveModules << " Modules containing Data" << endl;

}

 ITSSDDQAChecker.C:1
 ITSSDDQAChecker.C:2
 ITSSDDQAChecker.C:3
 ITSSDDQAChecker.C:4
 ITSSDDQAChecker.C:5
 ITSSDDQAChecker.C:6
 ITSSDDQAChecker.C:7
 ITSSDDQAChecker.C:8
 ITSSDDQAChecker.C:9
 ITSSDDQAChecker.C:10
 ITSSDDQAChecker.C:11
 ITSSDDQAChecker.C:12
 ITSSDDQAChecker.C:13
 ITSSDDQAChecker.C:14
 ITSSDDQAChecker.C:15
 ITSSDDQAChecker.C:16
 ITSSDDQAChecker.C:17
 ITSSDDQAChecker.C:18
 ITSSDDQAChecker.C:19
 ITSSDDQAChecker.C:20
 ITSSDDQAChecker.C:21
 ITSSDDQAChecker.C:22
 ITSSDDQAChecker.C:23
 ITSSDDQAChecker.C:24
 ITSSDDQAChecker.C:25
 ITSSDDQAChecker.C:26
 ITSSDDQAChecker.C:27
 ITSSDDQAChecker.C:28
 ITSSDDQAChecker.C:29
 ITSSDDQAChecker.C:30
 ITSSDDQAChecker.C:31
 ITSSDDQAChecker.C:32
 ITSSDDQAChecker.C:33
 ITSSDDQAChecker.C:34
 ITSSDDQAChecker.C:35
 ITSSDDQAChecker.C:36
 ITSSDDQAChecker.C:37
 ITSSDDQAChecker.C:38
 ITSSDDQAChecker.C:39
 ITSSDDQAChecker.C:40
 ITSSDDQAChecker.C:41
 ITSSDDQAChecker.C:42
 ITSSDDQAChecker.C:43
 ITSSDDQAChecker.C:44
 ITSSDDQAChecker.C:45
 ITSSDDQAChecker.C:46
 ITSSDDQAChecker.C:47
 ITSSDDQAChecker.C:48
 ITSSDDQAChecker.C:49
 ITSSDDQAChecker.C:50
 ITSSDDQAChecker.C:51
 ITSSDDQAChecker.C:52
 ITSSDDQAChecker.C:53
 ITSSDDQAChecker.C:54
 ITSSDDQAChecker.C:55
 ITSSDDQAChecker.C:56
 ITSSDDQAChecker.C:57
 ITSSDDQAChecker.C:58
 ITSSDDQAChecker.C:59
 ITSSDDQAChecker.C:60
 ITSSDDQAChecker.C:61
 ITSSDDQAChecker.C:62
 ITSSDDQAChecker.C:63
 ITSSDDQAChecker.C:64
 ITSSDDQAChecker.C:65
 ITSSDDQAChecker.C:66
 ITSSDDQAChecker.C:67
 ITSSDDQAChecker.C:68
 ITSSDDQAChecker.C:69
 ITSSDDQAChecker.C:70
 ITSSDDQAChecker.C:71
 ITSSDDQAChecker.C:72
 ITSSDDQAChecker.C:73
 ITSSDDQAChecker.C:74
 ITSSDDQAChecker.C:75
 ITSSDDQAChecker.C:76
 ITSSDDQAChecker.C:77
 ITSSDDQAChecker.C:78
 ITSSDDQAChecker.C:79
 ITSSDDQAChecker.C:80
 ITSSDDQAChecker.C:81
 ITSSDDQAChecker.C:82
 ITSSDDQAChecker.C:83
 ITSSDDQAChecker.C:84
 ITSSDDQAChecker.C:85
 ITSSDDQAChecker.C:86
 ITSSDDQAChecker.C:87
 ITSSDDQAChecker.C:88
 ITSSDDQAChecker.C:89
 ITSSDDQAChecker.C:90
 ITSSDDQAChecker.C:91
 ITSSDDQAChecker.C:92
 ITSSDDQAChecker.C:93
 ITSSDDQAChecker.C:94
 ITSSDDQAChecker.C:95