+
+/////////////////////////////////////////////////
+ClassImp(AliEveTRDMacroWizard)
+/////////////////////////////////////////////////
+
+//______________________________________________________
+AliEveTRDMacroWizard::AliEveTRDMacroWizard(const TGWindow* p)
+ :TGMainFrame(p ? p : gClient->GetRoot(), 10, 10, kMainFrame | kVerticalFrame)
+ ,fText(0x0)
+ ,fCombo(0x0)
+ ,fTextEdit(0x0)
+ ,fbCreate(0x0)
+ ,fbCancel(0x0)
+{
+ // Creates the macro wizard.
+
+ const Int_t width = 300;
+
+ // horizontal frame
+ TGHorizontalFrame *fFrameName = new TGHorizontalFrame(this, 10, 10, kHorizontalFrame);
+ TGLabel *fLabel = new TGLabel(fFrameName, "Name*");
+ fLabel->SetTextJustify(36);
+ fLabel->SetMargins(0,0,0,0);
+ fLabel->SetWrapLength(-1);
+ fFrameName->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+
+ fText = new TGTextEntry(fFrameName);
+ fText->SetMaxLength(255);
+ fText->SetAlignment(kTextLeft);
+ fText->SetText("");
+ fText->Resize(width, fText->GetDefaultHeight());
+ fFrameName->AddFrame(fText, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));
+
+
+ // horizontal frame
+ TGHorizontalFrame *fFrameComment = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
+ fLabel = new TGLabel(fFrameComment, "Comment");
+ fLabel->SetTextJustify(36);
+ fLabel->SetMargins(0,0,0,0);
+ fLabel->SetWrapLength(-1);
+ fFrameComment->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+
+ fTextEdit = new TGTextEdit(fFrameComment, width, 5*fText->GetDefaultHeight());
+ fFrameComment->AddFrame(fTextEdit, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));
+
+ // horizontal frame
+ TGHorizontalFrame *fFrameType = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
+ fLabel = new TGLabel(fFrameType, "Type*");
+ fLabel->SetTextJustify(36);
+ fLabel->SetMargins(0,0,0,0);
+ fLabel->SetWrapLength(-1);
+ fFrameType->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+
+ fCombo = new TGComboBox(fFrameType, -1, kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
+ fCombo->AddEntry("Single Track Selection", AliEveTRDTrackList::kSingleTrackSelect);
+ fCombo->AddEntry("Pair Tracks Selection", AliEveTRDTrackList::kCorrelTrackSelect);
+ fCombo->AddEntry("Single Track Analyse", AliEveTRDTrackList::kSingleTrackAnalyse);
+ fCombo->AddEntry("Single Track Histo", AliEveTRDTrackList::kSingleTrackHisto);
+ fCombo->AddEntry("Pair Tracks Analyse", AliEveTRDTrackList::kCorrelTrackAnalyse);
+ fCombo->AddEntry("Pair Tracks Histo", AliEveTRDTrackList::kCorrelTrackHisto);
+ fCombo->Select(-1);
+ fCombo->Resize(width, fText->GetDefaultHeight());
+ fFrameType->AddFrame(fCombo, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));
+
+ // horizontal frame
+ TGHorizontalFrame *fFrameAction = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
+ fbCancel = new TGTextButton(fFrameAction, "Cancel");
+ fbCancel->SetToolTipText("Exit macro creation wizard");
+ fFrameAction->AddFrame(fbCancel, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));
+ fbCreate = new TGTextButton(fFrameAction, "Done");
+ fbCreate->SetToolTipText("Use settings to create the macro");
+ fFrameAction->AddFrame(fbCreate, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));
+
+
+ // horizontal frame
+ TGHorizontalFrame *fFrameText = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
+ fLabel = new TGLabel(fFrameText, "(*) Mandatory fields");
+ fLabel->SetTextJustify(36);
+ fLabel->SetMargins(0,0,0,0);
+ fLabel->SetWrapLength(-1);
+ fFrameText->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
+
+ // put things together
+ AddFrame(fFrameName, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
+ AddFrame(fFrameComment, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
+ AddFrame(fFrameType, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
+ AddFrame(fFrameAction, new TGLayoutHints(kLHintsRight | kLHintsTop | kLHintsExpandX,2,2,2,2));
+
+ TGHorizontal3DLine *fLine = new TGHorizontal3DLine(this, 281, 2);
+ AddFrame(fLine, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
+ AddFrame(fFrameText, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
+
+
+ SetWindowName("TRD Macro Wizard");
+ SetMWMHints(kMWMDecorAll,
+ kMWMFuncAll,
+ kMWMInputModeless);
+ MapSubwindows();
+
+ Resize(GetDefaultSize());
+ MapWindow();
+
+ // Do the linking
+ //fCombo->Connect("Selected(Int_t)", "AliEveTRDMacroWizard", this, "Create(Int_t)");
+ fbCreate->Connect("Clicked()", "AliEveTRDMacroWizard", this, "HandleCreate()");
+ fbCancel->Connect("Clicked()", "AliEveTRDMacroWizard", this, "CloseWindow()");
+
+ // Standard choice
+ fCombo->Select(1, kFALSE);
+}
+
+const Char_t *fIncludes =
+"#if !defined(__CINT__) || defined(__MAKECINT__)\n"
+"#include <TROOT.h>\n"
+"#include <TH1.h>\n"
+"#include <TRD/AliTRDgeometry.h>\n"
+"#include <TRD/AliTRDcluster.h>\n"
+"#include <TRD/AliTRDseedV1.h>\n"
+"#include <TRD/AliTRDtrackV1.h>\n"
+"#endif\n";
+
+const Char_t *fMacroTemplate[7] = {
+""
+," if (!track) return kFALSE;\n"
+
+," n = 0;\n"
+" r = 0x0;\n"
+" if (!track) return;\n"
+
+," if (!track) return 0x0;\n"
+" TH1* h = 0x0;\n\n"
+"// Set bins, xmin and xmax here\n"
+" Int_t n = 1;\n"
+" Double_t xmin = 0;\n"
+" Double_t xmax = 100;\n\n"
+" if(!(h = (TH1*)gROOT->FindObject(\"h\"))){\n"
+" h = new TH1(\"h\", \"Title\", n, xmin, xmax);\n"
+" h->GetXaxis()->SetTitle("");\n"
+" h->GetYaxis()->SetTitle("");\n"
+" } else h->Reset();\n"
+
+," if (!track) return kFALSE;\n"
+" if (!track2) return kFALSE;\n"
+
+," n = 0;\n"
+" r = 0x0;\n"
+" if (!track) return;\n"
+" if (!track2) return;\n"
+
+," if (!track) return 0x0;\n"
+" if (!track2) return 0x0;\n"
+" TH1* h = 0x0;\n\n"
+"// Set bins, xmin and xmax here\n"
+" Int_t n = 1;\n"
+" Double_t xmin = 0;\n"
+" Double_t xmax = 100;\n\n"
+" if(!(h = (TH1*)gROOT->FindObject(\"h\"))){\n"
+" h = new TH1(\"h\", \"Title\", n, xmin, xmax);\n"
+" h->GetXaxis()->SetTitle("");\n"
+" h->GetYaxis()->SetTitle("");\n"
+" } else h->Reset();\n"
+};
+//______________________________________________________
+void AliEveTRDMacroWizard::Create(Int_t type)
+{
+ // Creates the macro with the selected type (combo box).
+
+ const Char_t *name = fText->GetText();
+ if(strcmp(name,"")==0){
+ AliInfo("Please specify a name for your macro.");
+ new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error",
+ "Please specify a name for your macro.", kMBIconExclamation, kMBOk);
+ //fCombo->Select(-1);
+ return;