ROOT logo
void MakeTrendingPHOSQA(const char* file="QAresults.root", Int_t runNumber, Bool_t IsOnGrid = kFALSE)
{
  //const char* dirNames[] = {"PHOSCellsQA_AnyInt","PHOSCellsQA_PHI7","PHOSPbPbQAResults","PHOSTriggerQAResults"};
  if (IsOnGrid) TGrid::Connect("alien://");  

  TFile* fin = TFile::Open(file);
  if(!fin) {printf("Cannot open file %s. exit.\n",file); return; }

  const char* listNameAnyInt = "PHOSCellsQA_AnyInt";
  TObjArray* listAnyInt = (TObjArray*)fin->Get(listNameAnyInt);
  
  const char* listNamePHI7 = "PHOSCellsQA_PHI7";
  TObjArray* listPHI7 = (TObjArray*)fin->Get(listNamePHI7);

  const char* listNamePbPb = "PHOSPbPbQAResults";
  TList* listPbPb = (TList*)fin->Get(listNamePbPb);

  const char* listNameTrig = "PHOSTriggerQAResults";
  TList* listTrig = (TList*)fin->Get(listNameTrig);
  
  
  TFile * trendFile = new TFile("trending.root","recreate");
  TTree * ttree=new TTree("trending","tree of trending variables");
 
  Int_t   nEvents=0;
  Float_t avCluEnergySM1=-9999., avCluMultSM1=-9999., avNcellPerCluSM1=-9999.; // Module 1
  Float_t avCluEnergySM2=-9999., avCluMultSM2=-9999., avNcellPerCluSM2=-9999.; // Module 2
  Float_t avCluEnergySM3=-9999., avCluMultSM3=-9999., avNcellPerCluSM3=-9999.; // Module 3

  ttree->Branch("run",&runNumber,"run/I");
  ttree->Branch("nEvents",&nEvents,"nEvents/F");

  ttree->Branch("avCluEnergySM1",&avCluEnergySM1,"avCluEnergySM1/F");
  ttree->Branch("avCluMultSM1",&avCluMultSM1,"avCluMultSM1/F");
  ttree->Branch("avNcellPerCluSM1",&avNcellPerCluSM1,"avNcellPerCluSM1/F");

  ttree->Branch("avCluEnergySM2",&avCluEnergySM2,"avCluEnergySM2/F");
  ttree->Branch("avCluMultSM2",&avCluMultSM2,"avCluMultSM2/F");
  ttree->Branch("avNcellPerCluSM2",&avNcellPerCluSM2,"avNcellPerCluSM2/F");

  ttree->Branch("avCluEnergySM3",&avCluEnergySM3,"avCluEnergySM3/F");
  ttree->Branch("avCluMultSM3",&avCluMultSM3,"avCluMultSM3/F");
  ttree->Branch("avNcellPerCluSM3",&avNcellPerCluSM3,"avNcellPerCluSM3/F");
  
  char hnam[60]; 
  TH2* h;
  
  Float_t emin = 0.3, emax = 1000.; // minimum and maximum energy of the cluster

  //-------- Number of processed events --------------------------------------------------------------
  TH1* hNEventsProcessedPerRun = (TH1*)listAnyInt->FindObject("hNEventsProcessedPerRun");
  if(hNEventsProcessedPerRun) nEvents =  hNEventsProcessedPerRun->GetEntries();

  //-------- Mean cluster energy, number of cells in the cluster Mean number of clusters per event ---
  sprintf(hnam,"run%d_hNCellsInClusterSM1",runNumber); 
  h = (TH2*)listAnyInt->FindObject(hnam);
  
  if(h && nEvents ) {
    h->GetXaxis()->SetRangeUser(emin,emax);
    avCluEnergySM1 = h->ProjectionX()->GetMean(); avNcellPerCluSM1 = h->ProjectionY()->GetMean();
    avCluMultSM1 = h->Integral()/nEvents;
  }

  sprintf(hnam,"run%d_hNCellsInClusterSM2",runNumber); 
  h = (TH2*)listAnyInt->FindObject(hnam);
  
  if(h && nEvents) {
    h->GetXaxis()->SetRangeUser(emin,emax);
    avCluEnergySM2 = h->ProjectionX()->GetMean(); avNcellPerCluSM2 = h->ProjectionY()->GetMean();
    avCluMultSM2 = h->Integral()/nEvents;
  }

  sprintf(hnam,"run%d_hNCellsInClusterSM3",runNumber); 
  h = (TH2*)listAnyInt->FindObject(hnam);

  if(h && nEvents) {
    h->GetXaxis()->SetRangeUser(emin,emax);
    avCluEnergySM3 = h->ProjectionX()->GetMean(); avNcellPerCluSM3 = h->ProjectionY()->GetMean();
    avCluMultSM3 = h->Integral()/nEvents;
  }
      
  //---------------------------------------------------------------------------------------------------

  ttree->Fill();
  trendFile->cd();

  ttree->Write();
  trendFile->Close();
  
}

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