// Checks existence of histograms which might have been left
// from the previous runs to continue their filling.
// Histogram names: module_iX_iZ_gain for TH2 and module_iX_iZ for TH1.
- // Root file name: PHOS_ModuleX_Calib.root, where X - module number.
+ // Root file name: PHOS_ModuleX_RCUY_Calib.root, where X - module number,
+ // Y - RCU number. If no RCU specified (rcu<0), file name is simply
+ // PHOS_ModuleX_Calib.root.
- char name[128];
- sprintf(name,"PHOS_Module%d_RCU%d_Calib",fMod,fRCU);
- SetName(name);
+ char name[128]; TString sname;
+ if(rcu<0) {
+ sname="PHOS_Module%d_Calib";
+ snprintf(name,sname.Length(),sname.Data(),fMod);
+ }
+ else {
+ sname="PHOS_Module%d_RCU%d_Calib";
+ snprintf(name,sname.Length(),sname.Data(),fMod,fRCU);
+ }
+
+ SetName(name);
SetTitle("Calibration Detector Algorithm");
- char rootname[128];
- sprintf(rootname,"%s.root",GetName());
+ char rootname[128];
+ TString srootname="%s.root";
+ snprintf(rootname,srootname.Length(),srootname.Data(),GetName());
fHistoFile = new TFile(rootname,"update");
fHistoArray.SetName("histo_container");
- TObjArray* objr = (TObjArray*)fHistoFile->Get(fHistoArray.GetName());
-
char hname[128];
TH1F* hist1=0;
TH2F* hist2=0;
+ TString shname;
for(Int_t iX=0; iX<64; iX++) {
for(Int_t iZ=0; iZ<56; iZ++) {
+
+ shname = "%d_%d_%d";
+ snprintf(hname,shname.Length(),shname.Data(),fMod,iX,iZ);
- sprintf(hname,"%d_%d_%d",fMod,iX,iZ);
- if(objr)
- hist1 = (TH1F*)objr->FindObject(hname);
+ hist1 = (TH1F*)fHistoFile->Get(hname);
if(hist1) {
fHgLgRatio[iX][iZ] = hist1;
fHistoArray.Add(hist1);
fHgLgRatio[iX][iZ] = 0;
for(Int_t iGain=0; iGain<2; iGain++) {
- sprintf(hname,"%d_%d_%d_%d",fMod,iX,iZ,iGain);
- if(objr)
- hist2 = (TH2F*)objr->FindObject(hname);
+
+ shname = "%d_%d_%d_%d";
+ snprintf(hname,shname.Length(),shname.Data(),fMod,iX,iZ,iGain);
+
+ hist2 = (TH2F*)fHistoFile->Get(hname);
if(hist2) {
fTimeEnergy[iX][iZ][iGain] = hist2;
fHistoArray.Add(hist2);
// oldTimeEnergy is an array of histograms kept from the previous run.
// By default the final histograms will not be saved to the root file.
- char name[128];
- sprintf(name,"PHOS_Module%d_RCU%d_Calib",fMod,fRCU);
- SetName(name);
+ char name[128]; TString sname;
+
+ if(rcu<0) {
+ sname="PHOS_Module%d_Calib";
+ snprintf(name,sname.Length(),sname.Data(),fMod);
+ }
+ else {
+ sname="PHOS_Module%d_RCU%d_Calib";
+ snprintf(name,sname.Length(),sname.Data(),fMod,fRCU);
+ }
+ SetName(name);
SetTitle("Calibration Detector Algorithm");
+
fHistoArray.SetName("histo_container");
char hname[128];
TH1F* hist1=0;
TH2F* hist2=0;
+ TString shname;
for(Int_t iX=0; iX<64; iX++) {
for(Int_t iZ=0; iZ<56; iZ++) {
- sprintf(hname,"%d_%d_%d",fMod,iX,iZ);
+ shname = "%d_%d_%d";
+ snprintf(hname,shname.Length(),shname.Data(),fMod,iX,iZ);
+
if(oldTimeEnergy)
hist1 = (TH1F*)oldTimeEnergy->FindObject(hname);
if(hist1) {
fHgLgRatio[iX][iZ] = 0;
for(Int_t iGain=0; iGain<2; iGain++) {
- sprintf(hname,"%d_%d_%d_%d",fMod,iX,iZ,iGain);
+
+ shname = "%d_%d_%d_%d";
+ snprintf(hname,shname.Length(),shname.Data(),fMod,iX,iZ,iGain);
+
if(oldTimeEnergy)
hist2 = (TH2F*)oldTimeEnergy->FindObject(hname);
if(hist2) {
for (Int_t iZ=0; iZ<56; iZ++) {
// HG/LG
- if(e[iX][iZ][0]>1 && e[iX][iZ][1]>1 ) {
+ if(e[iX][iZ][0]>10. && e[iX][iZ][1]>10. && e[iX][iZ][1]<900.) {
if(fHgLgRatio[iX][iZ]) {
//printf("iX=%d iZ=%d,e[iX][iZ][1]=%.3f,e[iX][iZ][0]=%.3f, t1=%.3f,t0=%.3f\n",
else {
sprintf(hname,"%d_%d_%d_%d",fMod,iX,iZ,iGain);
sprintf(htitl,"Energy vs TOF for crystal %d_%d_%d and gain %d",fMod,iX,iZ,iGain);
- fTimeEnergy[iX][iZ][iGain] = new TH2F(hname,htitl,1024,0.,1024.,100,0.,100);
+ fTimeEnergy[iX][iZ][iGain] = new TH2F(hname,htitl,100,0.,1024.,50,0.,50.);
fTimeEnergy[iX][iZ][iGain]->Fill(e[iX][iZ][iGain],t[iX][iZ][iGain]);
fHistoArray.Add(fTimeEnergy[iX][iZ][iGain]);
}