22 #include "TTimeStamp.h"
25 CWB::History::History(
char** StageNames,
int StageNumber,
char** TypeNames,
int TypeNumber,
char* FilePrefix,
bool HistoryModify) {
27 TTimeStamp CreationTT;
33 if (StageNames != NULL) {
35 for (i = 0; i < StageNumber; i++) {
36 if (StageNames[i] == NULL)
HistoryException(kBreak,
"CWB::History::History",
"StageNames[%i] is NULL", i);
37 this->StageNames.AddLast(
new TObjString(StageNames[i]));
41 if (TypeNames != NULL) {
43 for (i = 0; i < TypeNumber; i++) {
44 if (TypeNames[i] == NULL)
HistoryException(kBreak,
"CWB::History::History",
"TypeNames[%i] is NULL", i);
45 this->TypeNames.AddLast(
new TObjString(TypeNames[i]));
49 if (FilePrefix != NULL) this->FilePrefix.SetString(FilePrefix);
50 else this->FilePrefix.SetString(
"");
58 for (i = 0; i < History.
StageNames.GetSize(); i++) {
61 for (i = 0; i < History.
TypeNames.GetSize(); i++) {
62 this->
TypeNames.AddLast(
new TObjString(*static_cast<TObjString*>(History.
TypeNames.At(i))));
64 for (i = 0; i < History.
StageList.GetSize(); i++) {
82 for (
int i = 0;
i < StageNames.GetSize();
i++) {
83 if (strcmp(Name, static_cast<TObjString*>(StageNames.At(
i))->GetName()) == 0)
return true;
92 for (
int i = 0;
i < StageList.GetSize();
i++) {
93 StrApp =
static_cast<HistoryStage*
>(StageList.At(
i))->GetName();
94 if (strcmp(StrApp, Name) == 0) {
105 return StageAllowed(Name);
110 for (
int i = 0;
i < TypeNames.GetSize();
i++) {
111 if (strcmp(Name, static_cast<TObjString*>(TypeNames.At(
i))->GetName()) == 0)
return true;
122 if (StageNames == NULL) HistoryException(kBreak,
"CWB::History::SetStageNames",
"StageNames is NULL");
124 this->StageNames.Delete();
126 for (i = 0; i < StageNumber; i++) {
127 if (StageNames[i] == NULL) HistoryException(kBreak,
"History:SetStageNames",
"StageNames[%i] is NULL", i);
128 this->StageNames.AddLast(
new TObjString(StageNames[i]));
131 for (i =0; i < StageList.GetSize(); i++) {
135 if (!NameAllowed(StrApp)) StageList.Remove(tmpStage);
149 if (TypeNames == NULL) HistoryException(kBreak,
"CWB::History::SetTypeNames",
"TypeNames is NULL");
150 this->TypeNames.Delete();
152 for (i = 0; i < TypeNumber; i++) {
153 if (TypeNames[i] == NULL) HistoryException(kBreak,
"History:SetTypeNames",
"TypeNames[%i] is NULL", i);
154 this->TypeNames.AddLast(
new TObjString(TypeNames[i]));
172 if (!StageAllowed(Stage)) HistoryException(kBreak,
"CWB::History::AddLog",
"Stage not allowed");
174 if (!StageAlreadyPresent(Stage)) {
175 TempStage =
new HistoryStage(TypeNames, Stage, NULL, Time);
179 StageList.AddLast(TempStage);
184 tmpStage->
AddLog(Log, Time);
191 if (!StageAllowed(Stage)) HistoryException(kBreak,
"CWB::History::AddLog",
"Stage not allowed");
193 if (!StageAlreadyPresent(Stage)) {
194 TempStage =
new HistoryStage(TypeNames, Stage, NULL, Date, Time);
198 StageList.AddLast(TempStage);
203 tmpStage->
AddLog(Log, Date, Time);
210 if (!StageAllowed(Stage)) HistoryException(kBreak,
"CWB::History::AddHistory",
"Stage not allowed");
212 if (!StageAlreadyPresent(Stage)) {
213 TempStage =
new HistoryStage(TypeNames, Stage, NULL, Time);
217 StageList.AddLast(TempStage);
222 tmpStage->
AddHistory(Type, History, NULL, HistoryModify);
229 if (!StageAllowed(Stage)) HistoryException(kBreak,
"CWB::History::AddHistory",
"Stage not allowed");
231 if (!StageAlreadyPresent(Stage)) {
232 TempStage =
new HistoryStage(TypeNames, Stage, NULL, Date, Time);
236 StageList.AddLast(TempStage);
241 tmpStage->
AddHistory(Type, History, NULL, HistoryModify);
246 this->FilePrefix.SetString(FilePrefix);
251 return strdup(FilePrefix.GetString().Data());
259 if (!NameAllowed(StageName)) HistoryException(kBreak,
"CWB::History::GetHistory",
"Illegal Stage Name");
260 if (!TypeAllowed(Type)) HistoryException(kBreak,
"CWB::History::GetHistory",
"Illegal Type Name");
262 for (i = 0; i < StageList.GetSize(); i++) {
263 StrApp =
static_cast<HistoryStage*
>(StageList.At(i))->GetName();
264 if (strcmp(StrApp, StageName) == 0) {
266 return static_cast<HistoryStage*
>(StageList.At(i))->GetHistory(Type);
275 HistoryException(kBreak,
"CWB::History::GetHistoryDatime",
"Not implemented !!!");
315 char cfg_tmp_name[256];
316 sprintf(cfg_tmp_name,
"/dev/shm/%f.history.cfg",
fabs(random.Uniform()));
317 WriteToFile(cfg_tmp_name);
319 if (getenv(
"IGEC_HISTORY_VIEWER") != NULL) {
320 sprintf(tmpStr,
"%s %s", getenv(
"IGEC_HISTORY_VIEWER"), cfg_tmp_name);
321 ret = system(tmpStr);
323 sprintf(tmpStr,
"vim %s", cfg_tmp_name);
328 sprintf(tmpStr,
"vim %s", cfg_tmp_name);
332 sprintf(tmpStr,
"rm -f %s", cfg_tmp_name);
355 char cfg_tmp_name[256];
356 sprintf(cfg_tmp_name,
"/dev/shm/%f.history.cfg",
fabs(random.Uniform()));
357 WriteToFile(cfg_tmp_name,
true);
359 if (getenv(
"IGEC_HISTORY_VIEWER") != NULL) {
360 sprintf(tmpStr,
"%s %s", getenv(
"IGEC_HISTORY_VIEWER"), cfg_tmp_name);
361 ret = system(tmpStr);
363 sprintf(tmpStr,
"vim %s", cfg_tmp_name);
368 sprintf(tmpStr,
"vim %s", cfg_tmp_name);
372 sprintf(tmpStr,
"rm -f %s", cfg_tmp_name);
381 if (FileName != NULL) file_name =
TString(FileName);
384 cout <<
"Dump To File " << file_name.Data() << endl;
394 if (FileName != NULL)
strcpy(fname, FileName);
398 strcpy(fname, file_name.Data());
400 cout <<
"Dump To File " << fname << endl;
402 RootFile =
new TFile(fname,
"RECREATE");
414 for(i = 0; i < StageNames.GetEntries(); i++) {
415 TmpList->AddLast(
new TObjString(StageNames.At(i)->GetName()));
427 for(i = 0; i < TypeNames.GetEntries(); i++) {
428 TmpList->AddLast(
new TObjString(TypeNames.At(i)->GetName()));
436 this->HistoryModify = Modify;
437 return this->HistoryModify;
442 return HistoryModify;
448 HistoryException(kBreak,
"CWB::History::AddStage",
"History Modify not allowed");
450 if (NameAllowed(StageName))
451 HistoryException(kBreak,
"CWB::History::AddStage",
"Stage %s already present", StageName);
453 StageNames.AddLast(
new TObjString(StageName));
463 TObjString* TempString;
466 HistoryException(kBreak,
"CWB::History::RemoveStage",
"History Modify not allowed");
468 if (!NameAllowed(StageName))
469 HistoryException(kBreak,
"CWB::History::RemoveStage",
"Stage %s not present", StageName);
471 for (i = 0; i < StageNames.GetSize(); i++) {
472 TempString =
static_cast<TObjString*
>(StageNames.At(i));
473 if (strcmp(TempString->GetName(), StageName) == 0) StageNames.Remove(TempString);
476 for (i = 0; i < StageList.GetSize(); i++) {
479 if (!NameAllowed(StrApp)) StageList.Remove(tmpStage);
489 HistoryException(kBreak,
"Hsitory::AddType",
"History modify not allowed");
491 if (TypeAllowed(TypeName))
492 HistoryException(kBreak,
"Hsitory::AddType" ,
"Type %s already present", TypeName);
494 TypeNames.AddLast(
new TObjString(TypeName));
496 for(
int i = 0;
i < StageList.GetSize();
i++) {
497 static_cast<HistoryStage*
>(StageList.At(
i))->AddType(TypeName);
505 TObjString* TempString;
509 HistoryException(kBreak,
"Hsitory::RemoveType",
"History modify not allowed");
511 if (!TypeAllowed(TypeName))
512 HistoryException(kBreak,
"Hsitory::RemoveType" ,
"Type %s not present", TypeName);
514 for (i = 0; i < TypeNames.GetSize(); i++) {
515 TempString =
static_cast<TObjString*
>(TypeNames.At(i));
516 if (strcmp(TempString->GetName(), TypeName) == 0) TypeNames.Remove(TempString);
519 for(i = 0; i < StageList.GetSize(); i++) {
520 static_cast<HistoryStage*
>(StageList.At(i))->RemoveType(TypeName);
528 if (!StageAllowed(Stage))
529 HistoryException(kBreak,
"CWB::History::SetStageComment",
"Stage %s not allowed", Stage);
531 if (!StageAlreadyPresent(Stage))
532 HistoryException(kBreak,
"CWB::History::SetStageComment",
"Stage %s not present yet", Stage);
534 return const_cast<HistoryStage*
>(GetStage(Stage))->SetComment(Comment);
539 if (!StageAllowed(Stage))
540 HistoryException(kBreak,
"CWB::History::SetTypeComment",
"Stage %s not allowed", Stage);
542 if (!StageAlreadyPresent(Stage))
543 HistoryException(kBreak,
"CWB::History::SetTypeComment",
"Stage %s not present yet", Stage);
545 return const_cast<HistoryStage*
>(GetStage(Stage))->SetTypeComment(Type, Comment);
550 if (!StageAllowed(Stage))
551 HistoryException(kBreak,
"CWB::History::GetStageComment",
"Stage %s not allowed", Stage);
553 if (!StageAlreadyPresent(Stage))
554 HistoryException(kBreak,
"CWB::History::GetStageComment",
"Stage %s not present", Stage);
556 return const_cast<HistoryStage*
>(GetStage(Stage))->GetComment();
561 if (!StageAllowed(Stage))
562 HistoryException(kBreak,
"CWB::History::GetTypeComment",
"Stage %s not allowed", Stage);
564 if (!StageAlreadyPresent(Stage))
565 HistoryException(kBreak,
"CWB::History::GetTypeComment",
"Stage %s not present", Stage);
567 return const_cast<HistoryStage*
>(GetStage(Stage))->GetTypeComment(Type);
574 this->SortOrder = SortOrder;
575 for (i = 0; i < StageList.GetSize(); i++) {
576 static_cast<HistoryStage*
>(StageList.At(i))->SetSortOrder(SortOrder);
578 return this->SortOrder;
583 return this->SortOrder;
608 AscendingOrder =
true;
609 for (i = 0; i < StageList.GetSize(); i++) {
610 static_cast<HistoryStage*
>(StageList.At(i))->SetAscendingSortOrder();
612 return AscendingOrder;
619 AscendingOrder =
false;
620 for (i = 0; i < StageList.GetSize(); i++) {
621 static_cast<HistoryStage*
>(StageList.At(i))->SetDescendantSortOrder();
623 return AscendingOrder;
628 return AscendingOrder;
633 return !AscendingOrder;
640 StageList.Sort(AscendingOrder);
641 for (i = 0; i < StageList.GetSize(); i++) {
648 TTimeStamp CreationTT(CreationDate_Sec, CreationDate_NSec);
655 if (!StageAllowed(Stage))
656 HistoryException(kBreak,
"CWB::History::GetCreationDate",
"Stage %s not allowed", Stage);
658 if (!StageAlreadyPresent(Stage))
659 HistoryException(kBreak,
"CWB::History::GetCreationDate",
"Stage %s not present yet", Stage);
661 return const_cast<HistoryStage*
>(GetStage(Stage))->GetCreationTimeStamp();
666 HistoryModify =
false;
680 for (i = 0; i < StageList.GetSize(); i++) {
683 if (strcmp(StrApp, Name) == 0) {
696 for (i = 0; i < NameNumber; i++) {
697 for (j = i + 1; j < NameNumber; j++) {
698 if (strcmp(NameList[i], NameList[j]) == 0)
return true;
706 char *StrApp1, *StrApp2, tmpStr[256];
710 ofstream OutFile(FileName,
ios::out);
712 if (OutFile.fail()) HistoryException(kBreak,
"CWB::History::WriteToFile",
"Error opening output file");
716 for (i = 0; i < StageList.GetSize(); i++) {
717 TDatime tmpTime(static_cast<HistoryStage*>(StageList.At(i))->GetDate(),
718 static_cast<HistoryStage*
>(StageList.At(i))->GetTime());
720 StrApp1 =
static_cast<HistoryStage*
>(StageList.At(i))->GetName();
723 length = strlen(StrApp1);
731 OutFile << tmpStr << endl;
733 StrApp1 =
static_cast<HistoryStage*
>(StageList.At(i))->GetComment();
735 if (strlen(StrApp1) > 0) {
736 OutFile << StrApp1 << endl;
740 sprintf(tmpStr,
"Date: %i/%i/%i - Time: %i:%i:%i", tmpTime.GetDay(), tmpTime.GetMonth(),
741 tmpTime.GetYear(), tmpTime.GetHour(), tmpTime.GetMinute(), tmpTime.GetSecond());
742 OutFile << tmpStr << endl;
746 OutFile << tmpStr << endl;
749 if (static_cast<HistoryStage*>(StageList.At(i))->GetHistorySize() > 0) {
750 sprintf(tmpStr,
"Stage's History:");
751 OutFile << tmpStr << endl;
753 for (j = 0; j < static_cast<HistoryStage*>(StageList.At(i))->GetHistorySize(); j++) {
754 StrApp2 =
static_cast<HistoryStage*
>(StageList.At(i))->GetHistoryEntryType(j);
755 OutFile << StrApp2 <<
": " << endl;
757 StrApp2 =
static_cast<HistoryStage*
>(StageList.At(i))->GetHistoryEntry(j);
758 OutFile << StrApp2 << endl;
763 if (static_cast<HistoryStage*>(StageList.At(i))->GetLogSize() > 0) {
764 sprintf(tmpStr,
"Stage's Logs:");
765 OutFile << tmpStr << endl;
767 static_cast<HistoryStage*
>(StageList.At(i))->SortLogs();
768 for (j = 0; j < static_cast<HistoryStage*>(StageList.At(i))->GetLogSize(); j++) {
769 TimePtr =
static_cast<HistoryStage*
>(StageList.At(i))->GetLogEntryDatime(j);
770 OutFile << TimePtr->GetDay() <<
"/" << TimePtr->GetMonth() <<
"/" << TimePtr->GetYear() <<
" - ";
771 OutFile << TimePtr->GetHour() <<
":" << TimePtr->GetMinute() <<
":" << TimePtr->GetSecond() <<
" ";
773 StrApp2 =
static_cast<HistoryStage*
>(StageList.At(i))->GetLogEntry(j);
774 OutFile << StrApp2 << endl;
780 OutFile << endl << endl;
789 for (
int i = 0;
i < StageList.GetSize();
i++) {
790 StrApp =
static_cast<HistoryStage*
>(StageList.At(
i))->GetName();
791 if (strcmp(StrApp, Name) == 0) {
798 void CWB::History::Streamer(TBuffer &R__b)
801 TDatime CreationDatime;
802 TTimeStamp CreationTT;
805 if (R__b.IsReading()) {
806 Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
if (R__v) { }
807 TObject::Streamer(R__b);
808 StageNames.Streamer(R__b);
809 TypeNames.Streamer(R__b);
810 StageList.Streamer(R__b);
811 FilePrefix.Streamer(R__b);
813 R__b >> HistoryModify;
814 R__b >> (Int_t&)SortOrder;
815 R__b >> AscendingOrder;
817 CreationDatime.Streamer(R__b);
818 CreationTT.Set(CreationDatime.GetYear(), CreationDatime.GetMonth(), CreationDatime.GetDay(), CreationDatime.GetHour(), CreationDatime.GetMinute(), CreationDatime.GetSecond(), 0,
true, 0);
819 CreationDate_Sec = CreationTT.GetSec();
820 CreationDate_NSec = CreationTT.GetNanoSec();
823 R__b >> CreationDate_Sec;
824 R__b >> CreationDate_NSec;
825 R__b.CheckByteCount(R__s, R__c, CWB::History::IsA());
829 HistoryModify =
false;
832 CreationDate_Sec = CreationTT.GetSec();
833 CreationDate_NSec = CreationTT.GetNanoSec();
836 R__c = R__b.WriteVersion(CWB::History::IsA(), kTRUE);
837 TObject::Streamer(R__b);
838 StageNames.Streamer(R__b);
839 TypeNames.Streamer(R__b);
840 StageList.Streamer(R__b);
841 FilePrefix.Streamer(R__b);
842 R__b << HistoryModify;
843 R__b << (Int_t)SortOrder;
844 R__b << AscendingOrder;
845 R__b << CreationDate_Sec;
846 R__b << CreationDate_NSec;
847 R__b.SetByteCount(R__c, kTRUE);
853 cout << location <<
" " << msgfmt << endl;
bool IsSortOrderAlphabetical()
bool IsSortOrderInsertion()
void DumpToROOTFile(char *FileName=NULL)
char * RemoveStage(char *StageName)
bool SetDescendantSortOrder()
#define DEFAULT_SORT_ORDER
bool DuplicateNames(char **NameList, int NameNumber)
bool GetDescendantSortOrder()
bool SetDescendantSortOrder()
cout<< "skymap size : "<< L<< endl;for(int l=0;l< L;l++) sm.set(l, l);sm > const_cast< char * >("skymap.dat")
bool TypeAllowed(char *Name)
TDatime * GetHistoryDatime(char *StageName, char *Type)
void HistoryException(int type, const char *location, const char *msgfmt,...)
SortOrderType SetSortOrder(SortOrderType SortOrder)
char * RemoveType(char *TypeName)
void SetStageNames(char **StageNames, int StageNumber)
char * GetStageComment(char *Stage)
virtual void Browse(TBrowser *b)
char * GetLog(char *Stage, int index)
int GetLogSize(char *Stage)
void AddLog(char *LogMsg, TDatime *Time=NULL)
char * SetStageComment(char *Stage, char *Comment=NULL)
bool StageAlreadyPresent(char *Name)
bool GetAscendingSortOrder()
bool SetHistoryModify(bool Replace=true)
bool SetAscendingSortOrder()
char * SetTypeComment(char *Stage, char *Type, char *Comment=NULL)
double fabs(const Complex &x)
int GetStagePosition(char *Name)
bool StageAllowed(char *Name)
void AddHistory(char *Type, char *History, char *Comment=NULL, bool Replace=false)
void AddLog(char *Stage, char *Log, TDatime *Time=NULL)
bool NameAllowed(char *Name)
strcpy(RunLabel, RUN_LABEL)
bool SetAscendingSortOrder()
#define DEFAULT_ASCENDING
History(char **StageNames=NULL, int StageNumber=0, char **TypeNames=NULL, int TypeNumber=0, char *FilePrefix=NULL, bool HistoryModify=false)
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
void SetTypeNames(char **TypeNames, int TypeNumber)
char * AddType(char *TypeName)
void DumpToTextFile(char *FileName=NULL)
char * GetLogEntry(int index)
SortOrderType GetSortOrder()
SortOrderType SetSortOrder(SortOrderType SortOrder)
char * GetTypeComment(char *Stage, char *Type)
void SetFilePrefix(char *FilePrefix)
char * GetHistory(char *StageName, char *Type)
const CWB::HistoryStage * GetStage(char *Name)
void WriteToFile(char *FileName, bool SummaryOnly=false)
TTimeStamp GetCreationTimeStamp()
void AddHistory(char *Stage, char *Type, char *History, TDatime *Time=NULL)
char * AddStage(char *StageName)