ROOT logo
/*
  a very basic test macro for processing Pedestal events with AliCaloCalibPedestal
  (adopted from EMCALLEDda.C macro)
  Josh Hamblen
*/
#define AliDebugLevel() -1

void EMCALPEDda(const int runno = 476){
  
  int i, status;
  
  /* log start of process */
  printf("EMCAL DA started - %s\n",__FILE__);
  
  AliCaloCalibPedestal * calibPedestal = new 
    AliCaloCalibPedestal(AliCaloCalibPedestal::kEmCal); // pedestal and noise calibration
  
  int nevents=0;
  // Assume we are just interested in the 1st segment, _0.root below for fname*
  Char_t fname[256];
  sprintf(fname, "/local/data/Run_%09d.Seq_1A.Stream_0.root",runno);
  
  AliRawReader *rawReader = NULL;
  rawReader = new AliRawReaderRoot(fname);
  AliCaloRawStream *in = NULL; 
  in = new AliCaloRawStream(rawReader,"EMCAL");
  //in->SetOldRCUFormat(kTRUE);
  
  AliRawEventHeaderBase *aliHeader=NULL;
  int nev=0;
  /* read until EOF */
  while ( rawReader->NextEvent()) {
    nev++;
    
    aliHeader = (AliRawEventHeaderBase*) rawReader->GetEventHeader();
    calibPedestal->SetRunNumber( aliHeader->Get("RunNb") ); // just for fun; keep info on last run looked at
    
    // select physics and calibration events now (only calibration in future)
    if ( aliHeader->Get("Type") == AliRawEventHeaderBase::kPhysicsEvent || 
	 aliHeader->Get("Type") == AliRawEventHeaderBase::kCalibrationEvent  ) {
      
      nevents++;
      if(nevents%1000==0)cout<<"Event "<<nevents<<endl;
      //  Pedestal calibration
      calibPedestal->ProcessEvent(in);
    }
  } // loop over all events in file
    /* cleanup the reading handles */
  delete in;
  delete rawReader;    
  
  //
  // write results/histograms to rootfile
  //
  
  printf ("%d physics/calibration events processed.\n",nevents);
  
  // create output histograms and write to file
  Char_t outname[256];
  sprintf(outname, "PED_%09d.root",runno);
  
  calibPedestal->SaveHistograms(outname);

  printf("Wrote %s.\n",outname);
    
  // see if we can delete our analysis helper also
  delete calibPedestal;
  
  //
  // reopen the file that was just made to make the RMS hists
  //
  
  TFile *f=new TFile(outname,"update");
  
  // now take the profile histograms and plot the RMS from them 
  int ncols = hPedlowgain0->GetNbinsX();
  int nrows = hPedlowgain0->GetNbinsY();
  Double_t rms;
  
  TH2F *hPedRMSlowgain0 = new TH2F("hPedRMSlowgain0","Pedestal RMS, low gain, module 0",ncols,0,ncols,nrows,0,nrows); 
  TH2F *hPedRMShighgain0 = new TH2F("hPedRMShighgain0","Pedestal RMS, high gain, module 0",ncols,0,ncols,nrows,0,nrows);   
  TH2F *hSampleRMSlowgain0 = new TH2F("hSampleRMSlowgain0","All Samples RMS, low gain, module 0",ncols,0,ncols,nrows,0,nrows); 
  TH2F *hSampleRMShighgain0 = new TH2F("hSampleRMShighgain0","All Samples RMS, high gain, module 0",ncols,0,ncols,nrows,0,nrows);  

  for (int i=0; i < ncols; i++){
    for (int j=0; j < nrows; j++){
      
      rms = hPedlowgain0->GetBinError(i+1,j+1);
      hPedRMSlowgain0->Fill(i,j,rms);
      
      rms = hPedhighgain0->GetBinError(i+1,j+1);
      hPedRMShighgain0->Fill(i,j,rms);
      
      rms = hSamplelowgain0->GetBinError(i+1,j+1);
      hSampleRMSlowgain0->Fill(i,j,rms);
      
      rms = hSamplehighgain0->GetBinError(i+1,j+1);
      hSampleRMShighgain0->Fill(i,j,rms);
   }
  }
   
  // write the RMS hists to the file
  hPedRMSlowgain0->Write();
  hPedRMShighgain0->Write();
  hSampleRMSlowgain0->Write();
  hSampleRMShighgain0->Write();
  f->ls();

  // now draw the results
  gStyle->SetOptStat(0);
  gStyle->SetPalette(1);
  
  TCanvas *c1 = new TCanvas("c1","",800,600);
  c1->Divide(2,2);
  c1->cd(1);
  hPedlowgain0->Draw("colz");
  c1->cd(2);
  hPedRMSlowgain0->Draw("colz");
  c1->cd(3);
  hPedhighgain0->Draw("colz");
  c1->cd(4);
  hPedRMShighgain0->Draw("colz");
  c1->cd();

  TCanvas *c2 = new TCanvas("c2","",800,600);
  c2->Divide(2,2);
  c2->cd(1);
  hSamplelowgain0->Draw("colz");
  c2->cd(2);
  hSampleRMSlowgain0->Draw("colz");
  c2->cd(3);
  hSamplehighgain0->Draw("colz");
  c2->cd(4);
  hSampleRMShighgain0->Draw("colz");
  c2->cd();


}
 EMCALPEDda.C:1
 EMCALPEDda.C:2
 EMCALPEDda.C:3
 EMCALPEDda.C:4
 EMCALPEDda.C:5
 EMCALPEDda.C:6
 EMCALPEDda.C:7
 EMCALPEDda.C:8
 EMCALPEDda.C:9
 EMCALPEDda.C:10
 EMCALPEDda.C:11
 EMCALPEDda.C:12
 EMCALPEDda.C:13
 EMCALPEDda.C:14
 EMCALPEDda.C:15
 EMCALPEDda.C:16
 EMCALPEDda.C:17
 EMCALPEDda.C:18
 EMCALPEDda.C:19
 EMCALPEDda.C:20
 EMCALPEDda.C:21
 EMCALPEDda.C:22
 EMCALPEDda.C:23
 EMCALPEDda.C:24
 EMCALPEDda.C:25
 EMCALPEDda.C:26
 EMCALPEDda.C:27
 EMCALPEDda.C:28
 EMCALPEDda.C:29
 EMCALPEDda.C:30
 EMCALPEDda.C:31
 EMCALPEDda.C:32
 EMCALPEDda.C:33
 EMCALPEDda.C:34
 EMCALPEDda.C:35
 EMCALPEDda.C:36
 EMCALPEDda.C:37
 EMCALPEDda.C:38
 EMCALPEDda.C:39
 EMCALPEDda.C:40
 EMCALPEDda.C:41
 EMCALPEDda.C:42
 EMCALPEDda.C:43
 EMCALPEDda.C:44
 EMCALPEDda.C:45
 EMCALPEDda.C:46
 EMCALPEDda.C:47
 EMCALPEDda.C:48
 EMCALPEDda.C:49
 EMCALPEDda.C:50
 EMCALPEDda.C:51
 EMCALPEDda.C:52
 EMCALPEDda.C:53
 EMCALPEDda.C:54
 EMCALPEDda.C:55
 EMCALPEDda.C:56
 EMCALPEDda.C:57
 EMCALPEDda.C:58
 EMCALPEDda.C:59
 EMCALPEDda.C:60
 EMCALPEDda.C:61
 EMCALPEDda.C:62
 EMCALPEDda.C:63
 EMCALPEDda.C:64
 EMCALPEDda.C:65
 EMCALPEDda.C:66
 EMCALPEDda.C:67
 EMCALPEDda.C:68
 EMCALPEDda.C:69
 EMCALPEDda.C:70
 EMCALPEDda.C:71
 EMCALPEDda.C:72
 EMCALPEDda.C:73
 EMCALPEDda.C:74
 EMCALPEDda.C:75
 EMCALPEDda.C:76
 EMCALPEDda.C:77
 EMCALPEDda.C:78
 EMCALPEDda.C:79
 EMCALPEDda.C:80
 EMCALPEDda.C:81
 EMCALPEDda.C:82
 EMCALPEDda.C:83
 EMCALPEDda.C:84
 EMCALPEDda.C:85
 EMCALPEDda.C:86
 EMCALPEDda.C:87
 EMCALPEDda.C:88
 EMCALPEDda.C:89
 EMCALPEDda.C:90
 EMCALPEDda.C:91
 EMCALPEDda.C:92
 EMCALPEDda.C:93
 EMCALPEDda.C:94
 EMCALPEDda.C:95
 EMCALPEDda.C:96
 EMCALPEDda.C:97
 EMCALPEDda.C:98
 EMCALPEDda.C:99
 EMCALPEDda.C:100
 EMCALPEDda.C:101
 EMCALPEDda.C:102
 EMCALPEDda.C:103
 EMCALPEDda.C:104
 EMCALPEDda.C:105
 EMCALPEDda.C:106
 EMCALPEDda.C:107
 EMCALPEDda.C:108
 EMCALPEDda.C:109
 EMCALPEDda.C:110
 EMCALPEDda.C:111
 EMCALPEDda.C:112
 EMCALPEDda.C:113
 EMCALPEDda.C:114
 EMCALPEDda.C:115
 EMCALPEDda.C:116
 EMCALPEDda.C:117
 EMCALPEDda.C:118
 EMCALPEDda.C:119
 EMCALPEDda.C:120
 EMCALPEDda.C:121
 EMCALPEDda.C:122
 EMCALPEDda.C:123
 EMCALPEDda.C:124
 EMCALPEDda.C:125
 EMCALPEDda.C:126
 EMCALPEDda.C:127
 EMCALPEDda.C:128
 EMCALPEDda.C:129
 EMCALPEDda.C:130
 EMCALPEDda.C:131
 EMCALPEDda.C:132
 EMCALPEDda.C:133
 EMCALPEDda.C:134
 EMCALPEDda.C:135
 EMCALPEDda.C:136
 EMCALPEDda.C:137
 EMCALPEDda.C:138
 EMCALPEDda.C:139