Files
musrfit/src/external/TLemRunHeader/TLemRunHeader.cxx

407 lines
12 KiB
C++

// TLemRunHeader.C
//
// T. Prokscha
// 18/06/2006
//
//
#include "TLemRunHeader.h"
ClassImp(TLemRunHeader)
//----------------------------------------------------------
TLemRunHeader::TLemRunHeader(){
fRunTitle.SetString("");
fLemSetup.SetString("");
fStartTimeString.SetString("");
fStopTimeString.SetString("");
fOffsetPPCHistograms = 20;
fRunNumber = 0; // -1 not possible since UInt_t
fRunNumberString.SetString("");
fStartTime = 0; // -1 not possible since UInt_t
fStopTime = 0; // -1 not possible since UInt_t
fModeratorHV = -999.0;
fModeratorHVError = -999.0;
fModeratorHVString.SetString("");
fSampleHV = -999.0;
fSampleHVError = -999.0;
fSampleHVString.SetString("");
fImpEnergy = -999.0;
fImpEnergyString.SetString("");
fSampleTemperature = -999.0;
fSampleTemperatureError = -999.0;
fSampleTemperatureString.SetString("");
fSampleBField = -999.0;
fSampleBFieldError = -999.0;
fSampleBFieldString.SetString("");
fTimeResolution = -999.0;
fTimeResolutionString.SetString("");
fNChannels = -1;
fNChannelsString.SetString("");
fNHist = -1;
fNHistString.SetString("");
fOffsetPPCHistograms = 20;
fOffsetPPCHistogramsString.SetString("");
fCuts.SetString("");
fModerator.SetString("");
for (int i=0; i<NHIST; i++)
fTimeZero[i] = -1.;
fTimeZeroString.SetString("");
}
//----------------------------------------------------------
TLemRunHeader::~TLemRunHeader(){
//fTimeZero.clear();
}
//----------------------------------------------------------
void TLemRunHeader::SetRunTitle(const Char_t *title){
TString str;
str = "00 Title: ";
str += title;
fRunTitle.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetLemSetup(const Char_t *setup){
TString str;
str = "01 Setup: ";
str += setup;
fLemSetup.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetRunNumber(UInt_t runNo){
TString str;
fRunNumber = runNo;
str = "02 Run Number: ";
str += runNo;
fRunNumberString.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetStartTimeString(const Char_t *start){
TString str;
str = "03 Run Start Time: ";
str += start;
fStartTimeString.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetStopTimeString(const Char_t *stop){
TString str;
str = "04 Run Stop Time: ";
str += stop;
fStopTimeString.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetModeratorHV(Float_t modHV, Float_t error){
TString str;
char s[80];
snprintf(s, sizeof(s), "05 Moderator HV: %8.2f(%5.2f)", modHV, error);
str = s;
fModeratorHVString.SetString(str);
fModeratorHV = modHV;
fModeratorHVError = error;
}
//----------------------------------------------------------
void TLemRunHeader::SetSampleHV(Float_t value, Float_t error){
TString str;
char s[80];
snprintf(s, sizeof(s), "06 Sample HV: %8.2f(%5.2f)", value, error);
str = s;
fSampleHVString.SetString(str);
fSampleHV = value;
fSampleHVError = error;
}
//----------------------------------------------------------
void TLemRunHeader::SetImpEnergy(Float_t value){
TString str;
char s[80];
snprintf(s, sizeof(s), "07 Impl. Energy: %8.2f", value);
str = s;
fImpEnergyString.SetString(str);
fImpEnergy = value;
}
//----------------------------------------------------------
void TLemRunHeader::SetSampleTemperature(Float_t value, Float_t error){
TString str;
char s[80];
snprintf(s, sizeof(s), "08 Sample T: %8.2f(%5.2f)", value, error);
str = s;
fSampleTemperatureString.SetString(str);
fSampleTemperature = value;
fSampleTemperatureError = error;
}
//----------------------------------------------------------
void TLemRunHeader::SetSampleBField(Float_t value, Float_t error){
TString str;
char s[80];
snprintf(s, sizeof(s), "09 Sample B: %8.2f(%5.2f)", value, error);
str = s;
fSampleBFieldString.SetString(str);
fSampleBField = value;
fSampleBFieldError = error;
}
//----------------------------------------------------------
void TLemRunHeader::SetTimeResolution(Float_t value){
TString str;
char s[80];
snprintf(s, sizeof(s), "10 Time Res.: %10.7f", value);
str = s;
fTimeResolutionString.SetString(str);
fTimeResolution = value;
}
//----------------------------------------------------------
void TLemRunHeader::SetNChannels(Int_t value){
TString str;
char s[80];
snprintf(s, sizeof(s), "11 N Channels: %8d", value);
str = s;
fNChannelsString.SetString(str);
fNChannels = value;
}
//----------------------------------------------------------
void TLemRunHeader::SetNHist(Int_t value){
TString str;
char s[80];
snprintf(s, sizeof(s), "12 N Histograms: %6d", value);
str = s;
fNHistString.SetString(str);
fNHist = value;
SetNPosDetectors(fNHist);
}
//----------------------------------------------------------
void TLemRunHeader::SetOffsetPPCHistograms(UInt_t value){
TString str;
char s[80];
snprintf(s, sizeof(s), "13 Offset PPC Histograms: %6d", value);
str = s;
fOffsetPPCHistogramsString.SetString(str);
fOffsetPPCHistograms = value;
}
//----------------------------------------------------------
void TLemRunHeader::SetCuts(const Char_t *cuts){
TString str;
str = "14 Cuts: ";
str += cuts;
fCuts.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetModerator(const Char_t *moderator){
TString str;
str = "15 Moderator: ";
str += moderator;
fModerator.SetString(str);
}
//----------------------------------------------------------
void TLemRunHeader::SetTimeZero(const Double_t *value){
Int_t noT0s = fNHist;
if (noT0s > NHIST)
noT0s = NHIST;
TString str;
str = "16 t0: ";
for (Int_t i = 0; i < noT0s; i++){
//fTimeZero.push_back(value[i]);
fTimeZero[i] = value[i];
str += value[i];
str += " ";
}
fTimeZeroString.SetString(str);
}
//----------------------------------------------------------
TObjString TLemRunHeader::GetRunTitle() const {
TObjString ostr;
TString str;
Int_t delIndex;
str = fRunTitle.GetString();
delIndex = str.First(":") + 2;
str.Remove(0, delIndex);
ostr.SetString(str);
return ostr;
}
//----------------------------------------------------------
TObjString TLemRunHeader::GetLemSetup() const {
TObjString ostr;
TString str;
Int_t delIndex;
str = fLemSetup.GetString();
delIndex = str.First(":") + 2;
str.Remove(0, delIndex);
ostr.SetString(str);
return ostr;
}
//----------------------------------------------------------
//Int_t TLemRunHeader::GetRunNumber() const {
// TString str;
// Int_t delIndex;
//
// str = fRunNumberString.GetString();
// delIndex = str.First(":") + 1;
// str.Remove(0, delIndex);
// return str.Atoi();
//}
//----------------------------------------------------------
TObjString TLemRunHeader::GetStartTimeString() const {
TObjString ostr;
TString str;
Int_t delIndex;
str = fStartTimeString.GetString();
delIndex = str.First(":") + 2;
str.Remove(0, delIndex);
ostr.SetString(str);
return ostr;
}
//----------------------------------------------------------
TObjString TLemRunHeader::GetStopTimeString() const {
TObjString ostr;
TString str;
Int_t delIndex;
str = fStopTimeString.GetString();
delIndex = str.First(":") + 2;
str.Remove(0, delIndex);
ostr.SetString(str);
return ostr;
}
//----------------------------------------------------------
TObjString TLemRunHeader::GetCuts() const {
TObjString ostr;
TString str;
Int_t delIndex;
str = fCuts.GetString();
delIndex = str.First(":") + 2;
str.Remove(0, delIndex);
ostr.SetString(str);
return ostr;
}
//----------------------------------------------------------
TObjString TLemRunHeader::GetModerator() const {
TObjString ostr;
TString str;
Int_t delIndex;
str = fModerator.GetString();
delIndex = str.First(":") + 2;
str.Remove(0, delIndex);
ostr.SetString(str);
return ostr;
}
//----------------------------------------------------------
void TLemRunHeader::DumpHeader() const {
TObjString oTitle, oSetup, oStart, oStop, oCuts, oMod;
const char *title, *setup, *runStart, *runStop, *cuts, *mod;
oTitle = GetRunTitle();
title = oTitle.GetName();
oSetup = GetLemSetup();
setup = oSetup.GetName();
oStart = GetStartTimeString();
runStart = oStart.GetName();
oStop = GetStopTimeString();
runStop = oStop.GetName();
oCuts = GetCuts();
cuts = oCuts.GetName();
oMod = GetModerator();
mod = oMod.GetName();
printf("Title: %s\n",title);
printf("Setup: %s\n",setup);
printf("Run Number: %04d\n", GetRunNumber());
printf("Start Time: %s\n", runStart);
printf("Stop Time: %s\n", runStop);
printf("Moderator HV: %10.2f kV\n", fModeratorHV);
printf("Sample HV: %10.2f kV\n", fSampleHV);
printf("Impl. Energy: %10.2f keV\n", fImpEnergy);
printf("Sample T: %10.2f K\n", fSampleTemperature);
printf("Sample B: %10.2f G\n", fSampleBField);
printf("Time Res.: %10.7f ns\n", fTimeResolution);
printf("N Channels: %10d\n", fNChannels);
printf("N Histograms: %10d\n", fNHist);
printf("Offset PPC Histograms: %10d\n", fOffsetPPCHistograms);
printf("Cuts: %s\n", cuts);
printf("Moderator: %s\n", mod);
printf("t0: ");
for (Int_t i=0; i<fNHist; i++)
printf(" %7.2f ", fTimeZero[i]);
printf("\n");
}
//----------------------------------------------------------
//void TLemRunHeader::Browse(TBrowser *b){
void TLemRunHeader::DrawHeader() const {
TPaveText *pt;
TText *text;
TCanvas *ca;
Char_t str[256], helpstr[256];
TObjString oTitle, oSetup, oStart, oStop, oCuts, oMod;
const char *title, *setup, *runStart, *runStop, *cuts, *mod;
oTitle = GetRunTitle();
title = oTitle.GetName();
oSetup = GetLemSetup();
setup = oSetup.GetName();
oStart = GetStartTimeString();
runStart = oStart.GetName();
oStop = GetStopTimeString();
runStop = oStop.GetName();
oCuts = GetCuts();
cuts = oCuts.GetName();
oMod = GetModerator();
mod = oMod.GetName();
ca = new TCanvas("LEM RunHeader","LEM RunHeader", 147,37,699,527);
ca->Range(0., 0., 100., 100.);
pt = new TPaveText(10.,10.,90.,90.,"br");
pt->SetFillColor(19);
pt->SetTextAlign(12);
strcpy(str, "Title: ");
strcat(str, title);
text = pt->AddText(str);
strcpy(str, "Setup: ");
strcat(str, setup);
text = pt->AddText(str);
strcpy(str, "Run Start: ");
strcat(str, runStart);
text = pt->AddText(str);
strcpy(str, "Run Stop: ");
strcat(str, runStop);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Run Number: %10d", GetRunNumber());
text = pt->AddText(str);
snprintf(str, sizeof(str), "Moderator HV: %10.2f kV", fModeratorHV);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Sample HV: %10.2f kV", fSampleHV);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Impl. Energy: %10.2f keV", fImpEnergy);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Sample T: %10.2f K", fSampleTemperature);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Sample B: %10.2f G", fSampleBField);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Time Res.: %10.7f ns", fTimeResolution);
text = pt->AddText(str);
snprintf(str, sizeof(str), "N Channels: %10d", fNChannels);
text = pt->AddText(str);
snprintf(str, sizeof(str), "N Histograms: %10d", fNHist);
text = pt->AddText(str);
snprintf(str, sizeof(str), "Offset PPC Histograms: %10d", fOffsetPPCHistograms);
text = pt->AddText(str);
strcpy(str, "Cuts: ");
strcat(str, cuts);
text = pt->AddText(str);
strcpy(str, "Moderator: ");
strcat(str, mod);
text = pt->AddText(str);
strcpy(str,"t0: ");
for (Int_t i=0; i<fNHist; i++){
snprintf(helpstr, sizeof(helpstr), " %7.2f ", fTimeZero[i]);
strcat(str, helpstr);
}
text = pt->AddText(str);
pt->Draw();
ca->Modified(kTRUE);
}
//----------------------------------------------------------