1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
void tvdemo() {
printf("This demo show how to handle TTreeViewer sessions\n");
printf("Compile class Event from test directory before running this\n");
printf("- use arrow buttons from bottom to cycle records ...\n");
printf("- make new expressions and drag them to X, Y, Z or Cut items ...\n");
printf("- use the Draw button to check your current selection ...\n");
printf("- click the record button once you are happy with this ...\n");
printf("- open the TV context menu (right-click on the right panel)...\n");
printf(" Use : RemoveLastRecord() - to remove last record :-)\n");
printf(" SetRecordName() - to name current record\n");
printf(" UpdateRecord() - if you want to change a record from the list\n");
printf(" with your new X, Y, Z, Cut configuration.\n");
printf(" Best luck !\n");
open_session();
}
open_session(void *p = 0) {
//=========Macro generated by ROOT version3.00/00
//=========for tree "T" (Wed Feb 21 14:16:23 2001)
//===This macro can be opened from a TreeViewer session after loading
//===the corresponding tree
gSystem->Load("libTreeViewer");
TTreeViewer *treeview = (TTreeViewer *) p;
if (!treeview) treeview = new TTreeViewer();
TTree *tv_tree = (TTree*)gROOT->FindObject("T");
TFile *tv_file = (TFile*)gROOT->GetListOfFiles()->FindObject("Event.root");
if (!tv_tree) {
if (!tv_file) tv_file = new TFile("$ROOTSYS/test/Event.root");
if (tv_file) tv_tree = (TTree*)tv_file->Get("T");
if(!tv_tree) {
printf("Tree %s not found", fTree->GetName());
return;
}
}
treeview->SetTreeName("T");
treeview->SetNexpressions(10);
// Set expressions on axis and cut
TTVLVEntry *item;
// X expression
item = treeview->ExpressionItem(0);
item->SetExpression("fTemperature", "fTemperature");
// Y expression
item = treeview->ExpressionItem(1);
item->SetExpression("", "-empty-");
// Z expression
item = treeview->ExpressionItem(2);
item->SetExpression("", "-empty-");
// Cut expression
item = treeview->ExpressionItem(3);
item->SetExpression("", "-empty-");
// Scan list
item = treeview->ExpressionItem(4);
item->SetExpression("", "Scan box");
// User defined expressions
item = treeview->ExpressionItem(5);
item->SetExpression("sqrt(fTracks.fPx*fTracks.fPx+fTracks.fPy*fTracks.fPy)", "~Pt", kFALSE);
item = treeview->ExpressionItem(6);
item->SetExpression("fTracks.fPx>0", "~Cut1", kTRUE);
item = treeview->ExpressionItem(7);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(8);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(9);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(10);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(11);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(12);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(13);
item->SetExpression("", "-empty-", kFALSE);
item = treeview->ExpressionItem(14);
item->SetExpression("", "-empty-", kFALSE);
//--- session object
tv_session = new TTVSession(treeview);
treeview->SetSession(tv_session);
//--- tree viewer record
tv_record = tv_session->AddRecord(kTRUE);
tv_session->SetRecordName("Temperature");
tv_record->fX = "fTemperature";
tv_record->fY = "";
tv_record->fZ = "";
tv_record->fCut = "";
tv_record->fXAlias = "fTemperature";
tv_record->fYAlias = "-empty-";
tv_record->fZAlias = "-empty-";
tv_record->fCutAlias = "-empty-";
tv_record->fOption = "lego1";
tv_record->fScanRedirected = kFALSE;
tv_record->fCutEnabled = kTRUE;
//--- tree viewer record
tv_record = tv_session->AddRecord(kTRUE);
tv_session->SetRecordName("Py versus Px");
tv_record->fX = "fTracks.fPx";
tv_record->fY = "fTracks.fPy";
tv_record->fZ = "";
tv_record->fCut = "";
tv_record->fXAlias = "fTracks.fPx";
tv_record->fYAlias = "fTracks.fPy";
tv_record->fZAlias = "-empty-";
tv_record->fCutAlias = "-empty-";
tv_record->fOption = "lego";
tv_record->fScanRedirected = kFALSE;
tv_record->fCutEnabled = kTRUE;
//--- tree viewer record
tv_record = tv_session->AddRecord(kTRUE);
tv_session->SetRecordName("Transverse momentum");
tv_record->fX = "sqrt(fTracks.fPx*fTracks.fPx+fTracks.fPy*fTracks.fPy)";
tv_record->fY = "";
tv_record->fZ = "";
tv_record->fCut = "fTracks.fPx>0";
tv_record->fXAlias = "~Pt";
tv_record->fYAlias = "-empty-";
tv_record->fZAlias = "-empty-";
tv_record->fCutAlias = "~Cut1";
tv_record->fOption = "";
tv_record->fScanRedirected = kFALSE;
tv_record->fCutEnabled = kTRUE;
//--- tree viewer record
tv_record = tv_session->AddRecord(kTRUE);
tv_session->SetRecordName("Surface plot of Py vs. Px");
tv_record->fX = "fTracks.fPx";
tv_record->fY = "fTracks.fPy";
tv_record->fZ = "";
tv_record->fCut = "";
tv_record->fXAlias = "fTracks.fPx";
tv_record->fYAlias = "fTracks.fPy";
tv_record->fZAlias = "-empty-";
tv_record->fCutAlias = "-empty-";
tv_record->fOption = "SURF";
tv_record->fScanRedirected = kFALSE;
tv_record->fCutEnabled = kTRUE;
//--- Show first record
tv_session->Show(tv_session->First());
}
|