ROOT logo
void DrawTrendingPHOSQA(TString mergedTrendFile = "trending.root")
{
  //Reads merged trending.root file and draws trending plots.
  
  TFile * fin = TFile::Open(mergedTrendFile.Data());
  if(!fin) { printf("File trending.root not exists.\n"); return; }
  
  TTree * ttree = (TTree*) fin->Get("trending"); 
  if (!ttree) { printf("Trending tree not found."); return; }

  Int_t nRuns = ttree->GetEntries();

  Int_t runNumber = 0; Float_t nEvents = 0;
  Float_t avCluEnergySM1=0., avCluMultSM1=0., avNcellPerCluSM1=0.; // Module 1
  Float_t avCluEnergySM2=0., avCluMultSM2=0., avNcellPerCluSM2=0.; // Module 2
  Float_t avCluEnergySM3=0., avCluMultSM3=0., avNcellPerCluSM3=0.; // Module 3
 
  ttree->SetBranchAddress("run",&runNumber);
  ttree->SetBranchAddress("nEvents",&nEvents);

  ttree->SetBranchAddress("avCluEnergySM1",&avCluEnergySM1);
  ttree->SetBranchAddress("avCluMultSM1",&avCluMultSM1);
  ttree->SetBranchAddress("avNcellPerCluSM1",&avNcellPerCluSM1);

  ttree->SetBranchAddress("avCluEnergySM2",&avCluEnergySM2);
  ttree->SetBranchAddress("avCluMultSM2",&avCluMultSM2);
  ttree->SetBranchAddress("avNcellPerCluSM2",&avNcellPerCluSM2);

  ttree->SetBranchAddress("avCluEnergySM3",&avCluEnergySM3);
  ttree->SetBranchAddress("avCluMultSM3",&avCluMultSM3);
  ttree->SetBranchAddress("avNcellPerCluSM3",&avNcellPerCluSM3);

  // booking histograms
  TH1F* havCluEnergySM1 = new TH1F("havCluEnergySM1","Average cluster energy in Module 4",nRuns,0.,nRuns);
  TH1F* havCluEnergySM2 = new TH1F("havCluEnergySM2","Average cluster energy in Module 3",nRuns,0.,nRuns);
  TH1F* havCluEnergySM3 = new TH1F("havCluEnergySM3","Average cluster energy in Module 2",nRuns,0.,nRuns);

  TH1F* havCluMultSM1 = new TH1F("havCluMultSM1","Average number of clusters per event in Module 4",nRuns,0.,nRuns);
  TH1F* havCluMultSM2 = new TH1F("havCluMultSM2","Average number of clusters per event in Module 3",nRuns,0.,nRuns);
  TH1F* havCluMultSM3 = new TH1F("havCluMultSM3","Average number of clusters per event in Module 2",nRuns,0.,nRuns);

  TH1F* havNcellPerCluSM1 = new TH1F("havNcellPerCluSM1","Average number of cells in cluster in Module 4",nRuns,0.,nRuns);
  TH1F* havNcellPerCluSM2 = new TH1F("havNcellPerCluSM2","Average number of cells in cluster in Module 3",nRuns,0.,nRuns);
  TH1F* havNcellPerCluSM3 = new TH1F("havNcellPerCluSM3","Average number of cells in cluster in Module 2",nRuns,0.,nRuns);

  // List of histograms for saving
  TList list;
  list.Add(havCluEnergySM1);
  list.Add(havCluEnergySM2);
  list.Add(havCluEnergySM3);
  list.Add(havCluMultSM1);
  list.Add(havCluMultSM2);
  list.Add(havCluMultSM3);
  list.Add(havNcellPerCluSM1);
  list.Add(havNcellPerCluSM2);
  list.Add(havNcellPerCluSM3);

  char runlabel[6];
  
  for (Int_t irun=0;irun<nRuns;irun++){
    ttree->GetEntry(irun);
    
    sprintf(runlabel,"%i",runNumber);
    
    havCluEnergySM1->SetBinContent(irun+1, avCluEnergySM1);
    havCluEnergySM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
    havCluEnergySM2->SetBinContent(irun+1, avCluEnergySM2);
    havCluEnergySM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
    havCluEnergySM3->SetBinContent(irun+1, avCluEnergySM3);
    havCluEnergySM3->GetXaxis()->SetBinLabel(irun+1,runlabel);

    havCluMultSM1->SetBinContent(irun+1, avCluMultSM1);
    havCluMultSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);

    havCluMultSM2->SetBinContent(irun+1, avCluMultSM2);
    havCluMultSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);

    havCluMultSM3->SetBinContent(irun+1, avCluMultSM3);
    havCluMultSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);

    havNcellPerCluSM1->SetBinContent(irun+1, avNcellPerCluSM1);
    havNcellPerCluSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);

    havNcellPerCluSM2->SetBinContent(irun+1, avNcellPerCluSM2);
    havNcellPerCluSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);

    havNcellPerCluSM3->SetBinContent(irun+1, avNcellPerCluSM3);
    havNcellPerCluSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);	
  }
  
  
  TFile* fout = new TFile("ProductionQA.hist.root","recreate");
  list.Write(); // save selected trend histograms to file
  fout->Close();
}
 DrawTrendingPHOSQA.C:1
 DrawTrendingPHOSQA.C:2
 DrawTrendingPHOSQA.C:3
 DrawTrendingPHOSQA.C:4
 DrawTrendingPHOSQA.C:5
 DrawTrendingPHOSQA.C:6
 DrawTrendingPHOSQA.C:7
 DrawTrendingPHOSQA.C:8
 DrawTrendingPHOSQA.C:9
 DrawTrendingPHOSQA.C:10
 DrawTrendingPHOSQA.C:11
 DrawTrendingPHOSQA.C:12
 DrawTrendingPHOSQA.C:13
 DrawTrendingPHOSQA.C:14
 DrawTrendingPHOSQA.C:15
 DrawTrendingPHOSQA.C:16
 DrawTrendingPHOSQA.C:17
 DrawTrendingPHOSQA.C:18
 DrawTrendingPHOSQA.C:19
 DrawTrendingPHOSQA.C:20
 DrawTrendingPHOSQA.C:21
 DrawTrendingPHOSQA.C:22
 DrawTrendingPHOSQA.C:23
 DrawTrendingPHOSQA.C:24
 DrawTrendingPHOSQA.C:25
 DrawTrendingPHOSQA.C:26
 DrawTrendingPHOSQA.C:27
 DrawTrendingPHOSQA.C:28
 DrawTrendingPHOSQA.C:29
 DrawTrendingPHOSQA.C:30
 DrawTrendingPHOSQA.C:31
 DrawTrendingPHOSQA.C:32
 DrawTrendingPHOSQA.C:33
 DrawTrendingPHOSQA.C:34
 DrawTrendingPHOSQA.C:35
 DrawTrendingPHOSQA.C:36
 DrawTrendingPHOSQA.C:37
 DrawTrendingPHOSQA.C:38
 DrawTrendingPHOSQA.C:39
 DrawTrendingPHOSQA.C:40
 DrawTrendingPHOSQA.C:41
 DrawTrendingPHOSQA.C:42
 DrawTrendingPHOSQA.C:43
 DrawTrendingPHOSQA.C:44
 DrawTrendingPHOSQA.C:45
 DrawTrendingPHOSQA.C:46
 DrawTrendingPHOSQA.C:47
 DrawTrendingPHOSQA.C:48
 DrawTrendingPHOSQA.C:49
 DrawTrendingPHOSQA.C:50
 DrawTrendingPHOSQA.C:51
 DrawTrendingPHOSQA.C:52
 DrawTrendingPHOSQA.C:53
 DrawTrendingPHOSQA.C:54
 DrawTrendingPHOSQA.C:55
 DrawTrendingPHOSQA.C:56
 DrawTrendingPHOSQA.C:57
 DrawTrendingPHOSQA.C:58
 DrawTrendingPHOSQA.C:59
 DrawTrendingPHOSQA.C:60
 DrawTrendingPHOSQA.C:61
 DrawTrendingPHOSQA.C:62
 DrawTrendingPHOSQA.C:63
 DrawTrendingPHOSQA.C:64
 DrawTrendingPHOSQA.C:65
 DrawTrendingPHOSQA.C:66
 DrawTrendingPHOSQA.C:67
 DrawTrendingPHOSQA.C:68
 DrawTrendingPHOSQA.C:69
 DrawTrendingPHOSQA.C:70
 DrawTrendingPHOSQA.C:71
 DrawTrendingPHOSQA.C:72
 DrawTrendingPHOSQA.C:73
 DrawTrendingPHOSQA.C:74
 DrawTrendingPHOSQA.C:75
 DrawTrendingPHOSQA.C:76
 DrawTrendingPHOSQA.C:77
 DrawTrendingPHOSQA.C:78
 DrawTrendingPHOSQA.C:79
 DrawTrendingPHOSQA.C:80
 DrawTrendingPHOSQA.C:81
 DrawTrendingPHOSQA.C:82
 DrawTrendingPHOSQA.C:83
 DrawTrendingPHOSQA.C:84
 DrawTrendingPHOSQA.C:85
 DrawTrendingPHOSQA.C:86
 DrawTrendingPHOSQA.C:87
 DrawTrendingPHOSQA.C:88
 DrawTrendingPHOSQA.C:89
 DrawTrendingPHOSQA.C:90
 DrawTrendingPHOSQA.C:91
 DrawTrendingPHOSQA.C:92
 DrawTrendingPHOSQA.C:93
 DrawTrendingPHOSQA.C:94
 DrawTrendingPHOSQA.C:95
 DrawTrendingPHOSQA.C:96
 DrawTrendingPHOSQA.C:97
 DrawTrendingPHOSQA.C:98