alice_esd_html_summary.C: Html table and event summary for alice_esd.C | Event Display | arrow.C: Demonstrates usage of TEveArrow class. |
// @(#)root/eve:$Id: alice_esd_split.C 26876 2008-12-12 14:45:40Z matevz $ // Author: Bertrand Bellenot // Complex example showing ALICE ESD visualization in several views. /* alice_esd_split.C - a simple event-display for ALICE ESD tracks and clusters version with several windows in the same workspace ------------------------------------------------------------------------ ------------------------------------------------------------------------ Only standard ROOT is used to process the ALICE ESD files. No ALICE code is needed, only four simple coordinate-transformation functions declared in this macro. A simple geometry of 10KB, extracted from the full TGeo-geometry, is used to outline the central detectors of ALICE. All files are access from the web by using the "CACHEREAD" option. ------------------------------------------------------------------------ ------------------------------------------------------------------------ 1. Automatic building of ALICE ESD class declarations and dictionaries. ------------------------------------------------------------------------ ALICE ESD is a TTree containing tracks and other event-related information with one entry per event. All these classes are part of the AliROOT offline framework and are not available to standard ROOT. To be able to access the event data in a natural way, by using data-members of classes and object containers, the header files and class dictionaries are automatically generated from the TStreamerInfo classes stored in the ESD file by using the TFile::MakeProject() function. The header files and a shared library is created in the aliesd/ directory and can be loaded dynamically into the ROOT session. See alice_esd_loadlib(). 2. Creation of simple GUI for event navigation. ------------------------------------------------------------------------ Most common use of the event-display is to browse through a collection of events. Thus a simple GUI allowing this is created in the function make_gui(). Eve uses the configurable ROOT-browser as its main window and so we create an extra tab in the left working area of the browser and provide backward/forward buttons. 3. Event-navigation functions. ------------------------------------------------------------------------ As this is a simple macro, we store the information about the current event in the global variable 'Int_t esd_event_id'. The functions for event-navigation simply modify this variable and call the load_event() function which does the following: 1. drop the old visualization objects; 2. retrieve given event from the ESD tree; 3. call alice_esd_read() function to create visualization objects for the new event. 4. Reading of ALICE data and creation of visualization objects. ------------------------------------------------------------------------ This is performed in alice_esd_read() function, with the following steps: 1. create the track container object - TEveTrackList; 2. iterate over the ESD tracks, create TEveTrack objects and append them to the container; 3. instruct the container to extrapolate the tracks and set their visual attributes. */ R__EXTERN TEveProjectionManager *gRPhiMgr; R__EXTERN TEveProjectionManager *gRhoZMgr; TEveGeoShape *gGeoShape; // Forward declarations. class AliESDEvent; class AliESDfriend; class AliESDtrack; class AliExternalTrackParam; Bool_t alice_esd_loadlib(const char* file, const char* project); void make_gui(); void load_event(); void update_projections(); void alice_esd_read(); TEveTrack* esd_make_track(TEveTrackPropagator* trkProp, Int_t index, AliESDtrack* at, AliExternalTrackParam* tp=0); Bool_t trackIsOn(AliESDtrack* t, Int_t mask); void trackGetPos(AliExternalTrackParam* tp, Double_t r[3]); void trackGetMomentum(AliExternalTrackParam* tp, Double_t p[3]); Double_t trackGetP(AliExternalTrackParam* tp); // Configuration and global variables. const char* esd_file_name = "http://root.cern.ch/files/alice_ESDs.root"; const char* esd_friends_file_name = "http://root.cern.ch/files/alice_ESDfriends.root"; const char* esd_geom_file_name = "http://root.cern.ch/files/alice_ESDgeometry.root"; TFile *esd_file = 0; TFile *esd_friends_file = 0; TTree *esd_tree = 0; AliESDEvent *esd = 0; AliESDfriend *esd_friend = 0; Int_t esd_event_id = 0; // Current event id. TEveTrackList *track_list = 0; TGTextEntry *gTextEntry; TGHProgressBar *gProgress; /******************************************************************************/ // Initialization and steering functions /******************************************************************************/ //______________________________________________________________________________ void alice_esd_split(Bool_t auto_size=kFALSE) { // Main function, initializes the application. // // 1. Load the auto-generated library holding ESD classes and ESD dictionaries. // 2. Open ESD data-files. // 3. Load cartoon geometry. // 4. Spawn simple GUI. // 5. Load first event. TFile::SetCacheFileDir("."); if (!alice_esd_loadlib(esd_file_name, "aliesd")) { Error("alice_esd", "Can not load project libraries."); return; } printf("*** Opening ESD ***\n"); esd_file = TFile::Open(esd_file_name, "CACHEREAD"); if (!esd_file) return; printf("*** Opening ESD-friends ***\n"); esd_friends_file = TFile::Open(esd_friends_file_name, "CACHEREAD"); if (!esd_friends_file) return; esd_tree = (TTree*) esd_file->Get("esdTree"); esd = (AliESDEvent*) esd_tree->GetUserInfo()->FindObject("AliESDEvent"); // Set the branch addresses. { TIter next(esd->fESDObjects); TObject *el; while ((el=(TNamed*)next())) { TString bname(el->GetName()); if(bname.CompareTo("AliESDfriend")==0) { // AliESDfriend needs some '.' magick. esd_tree->SetBranchAddress("ESDfriend.", esd->fESDObjects->GetObjectRef(el)); } else { esd_tree->SetBranchAddress(bname, esd->fESDObjects->GetObjectRef(el)); } } } TEveManager::Create(); // Adapt the main frame to the screen size... if (auto_size) { Int_t qq; UInt_t ww, hh; gVirtualX->GetWindowSize(gVirtualX->GetDefaultRootWindow(), qq, qq, ww, hh); Float_t screen_ratio = (Float_t)ww/(Float_t)hh; if (screen_ratio > 1.5) { gEve->GetBrowser()->MoveResize(100, 50, ww - 300, hh - 100); } else { gEve->GetBrowser()->Move(50, 50); } } { // Simple geometry TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); if (!geom) return; TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); gGeoShape = TEveGeoShape::ImportShapeExtract(gse, 0); geom->Close(); delete geom; gEve->AddGlobalElement(gGeoShape); } make_gui(); // import the geometry in the projection managers if (gRPhiMgr) { TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr); a->SetNdivisions(3); gEve->GetScenes()->FindChild("R-Phi Projection")->AddElement(a); gRPhiMgr->ImportElements(gGeoShape); } if (gRhoZMgr) { TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr); a->SetNdivisions(3); gEve->GetScenes()->FindChild("Rho-Z Projection")->AddElement(a); gRhoZMgr->ImportElements(gGeoShape); } load_event(); update_projections(); gEve->Redraw3D(kTRUE); // Reset camera after the first event has been shown. } //______________________________________________________________________________ Bool_t alice_esd_loadlib(const char* file, const char* project) { // Make sure that shared library created from the auto-generated project // files exists and load it. TString lib(Form("%s/%s.%s", project, project, gSystem->GetSoExt())); if (gSystem->AccessPathName(lib, kReadPermission)) { TFile* f = TFile::Open(file, "CACHEREAD"); if (f == 0) return kFALSE; f->MakeProject(project, "*", "++"); f->Close(); delete f; } return gSystem->Load(lib) >= 0; } //______________________________________________________________________________ void load_event() { // Load event specified in global esd_event_id. // The contents of previous event are removed. printf("Loading event %d.\n", esd_event_id); gTextEntry->SetTextColor(0xff0000); gTextEntry->SetText(Form("Loading event %d...",esd_event_id)); gSystem->ProcessEvents(); if (track_list) track_list->DestroyElements(); esd_tree->GetEntry(esd_event_id); alice_esd_read(); gEve->Redraw3D(kFALSE, kTRUE); gTextEntry->SetTextColor(0x000000); gTextEntry->SetText(Form("Event %d loaded",esd_event_id)); gROOT->ProcessLine("SplitGLView::UpdateSummary()"); } //______________________________________________________________________________ void update_projections() { // cleanup then import geometry and event // in the projection managers TEveElement* top = gEve->GetCurrentEvent(); if (gRPhiMgr && top) { gRPhiMgr->DestroyElements(); gRPhiMgr->ImportElements(gGeoShape); gRPhiMgr->ImportElements(top); } if (gRhoZMgr && top) { gRhoZMgr->DestroyElements(); gRhoZMgr->ImportElements(gGeoShape); gRhoZMgr->ImportElements(top); } } /******************************************************************************/ // GUI /******************************************************************************/ //______________________________________________________________________________ // // EvNavHandler class is needed to connect GUI signals. class EvNavHandler { public: void Fwd() { if (esd_event_id < esd_tree->GetEntries() - 1) { ++esd_event_id; load_event(); update_projections(); } else { gTextEntry->SetTextColor(0xff0000); gTextEntry->SetText("Already at last event"); printf("Already at last event.\n"); } } void Bck() { if (esd_event_id > 0) { --esd_event_id; load_event(); update_projections(); } else { gTextEntry->SetTextColor(0xff0000); gTextEntry->SetText("Already at first event"); printf("Already at first event.\n"); } } }; //______________________________________________________________________________ void make_gui() { // Create minimal GUI for event navigation. gROOT->ProcessLine(".L SplitGLView.C+"); TEveBrowser* browser = gEve->GetBrowser(); browser->ShowCloseTab(kFALSE); browser->ExecPlugin("SplitGLView", 0, "new SplitGLView(gClient->GetRoot(), 600, 450, kTRUE)"); browser->ShowCloseTab(kTRUE); browser->StartEmbedding(TRootBrowser::kLeft); TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600); frmMain->SetWindowName("XX GUI"); frmMain->SetCleanup(kDeepCleanup); TGHorizontalFrame* hf = new TGHorizontalFrame(frmMain); { TString icondir( Form("%s/icons/", gSystem->Getenv("ROOTSYS")) ); TGPictureButton* b = 0; EvNavHandler *fh = new EvNavHandler; b = new TGPictureButton(hf, gClient->GetPicture(icondir + "GoBack.gif")); hf->AddFrame(b, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 10, 2, 10, 10)); b->Connect("Clicked()", "EvNavHandler", fh, "Bck()"); b = new TGPictureButton(hf, gClient->GetPicture(icondir + "GoForward.gif")); hf->AddFrame(b, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 10, 10, 10)); b->Connect("Clicked()", "EvNavHandler", fh, "Fwd()"); gTextEntry = new TGTextEntry(hf); gTextEntry->SetEnabled(kFALSE); hf->AddFrame(gTextEntry, new TGLayoutHints(kLHintsLeft | kLHintsCenterY | kLHintsExpandX, 2, 10, 10, 10)); } frmMain->AddFrame(hf, new TGLayoutHints(kLHintsTop | kLHintsExpandX,0,0,20,0)); gProgress = new TGHProgressBar(frmMain, TGProgressBar::kFancy, 100); gProgress->ShowPosition(kTRUE, kFALSE, "%.0f tracks"); gProgress->SetBarColor("green"); frmMain->AddFrame(gProgress, new TGLayoutHints(kLHintsExpandX, 10, 10, 5, 5)); frmMain->MapSubwindows(); frmMain->Resize(); frmMain->MapWindow(); browser->StopEmbedding(); browser->SetTabTitle("Event Control", 0); } /******************************************************************************/ // Code for reading AliESD and creating visualization objects /******************************************************************************/ enum ESDTrackFlags { kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008, kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080, kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800, kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000, kHMPIDpid=0x20000, kEMCALmatch=0x40000, kTRDbackup=0x80000, kTRDStop=0x20000000, kESDpid=0x40000000, kTIME=0x80000000 }; //______________________________________________________________________________ void alice_esd_read() { // Read tracks and associated clusters from current event. AliESDRun *esdrun = (AliESDRun*) esd->fESDObjects->FindObject("AliESDRun"); TClonesArray *tracks = (TClonesArray*) esd->fESDObjects->FindObject("Tracks"); // This needs further investigation. Clusters not shown. // AliESDfriend *frnd = (AliESDfriend*) esd->fESDObjects->FindObject("AliESDfriend"); // printf("Friend %p, n_tracks:%d\n", frnd, frnd->fTracks.GetEntries()); if (track_list == 0) { track_list = new TEveTrackList("ESD Tracks"); track_list->SetMainColor(6); //track_list->SetLineWidth(2); track_list->SetMarkerColor(kYellow); track_list->SetMarkerStyle(4); track_list->SetMarkerSize(0.5); gEve->AddElement(track_list); } TEveTrackPropagator* trkProp = track_list->GetPropagator(); trkProp->SetMagField( 0.1 * esdrun->fMagneticField ); // kGaus to Tesla gProgress->Reset(); gProgress->SetMax(tracks->GetEntriesFast()); for (Int_t n=0; n<tracks->GetEntriesFast(); ++n) { AliESDtrack* at = (AliESDtrack*) tracks->At(n); // If ITS refit failed, take track parameters at inner TPC radius. AliExternalTrackParam* tp = at; if (! trackIsOn(at, kITSrefit)) { tp = at->fIp; } TEveTrack* track = esd_make_track(trkProp, n, at, tp); track->SetAttLineAttMarker(track_list); gEve->AddElement(track, track_list); // This needs further investigation. Clusters not shown. // if (frnd) // { // AliESDfriendTrack* ft = (AliESDfriendTrack*) frnd->fTracks->At(n); // printf("%d friend = %p\n", ft); // } gProgress->Increment(1); } track_list->MakeTracks(); } //______________________________________________________________________________ TEveTrack* esd_make_track(TEveTrackPropagator* trkProp, Int_t index, AliESDtrack* at, AliExternalTrackParam* tp) { // Helper function creating TEveTrack from AliESDtrack. // // Optionally specific track-parameters (e.g. at TPC entry point) // can be specified via the tp argument. Double_t pbuf[3], vbuf[3]; TEveRecTrack rt; if (tp == 0) tp = at; rt.fLabel = at->fLabel; rt.fIndex = index; rt.fStatus = (Int_t) at->fFlags; rt.fSign = (tp->fP[4] > 0) ? 1 : -1; trackGetPos(tp, vbuf); rt.fV.Set(vbuf); trackGetMomentum(tp, pbuf); rt.fP.Set(pbuf); Double_t ep = trackGetP(at); Double_t mc = 0.138; // at->GetMass(); - Complicated funciton, requiring PID. rt.fBeta = ep/TMath::Sqrt(ep*ep + mc*mc); TEveTrack* track = new TEveTrack(&rt, trkProp); track->SetName(Form("TEveTrack %d", rt.fIndex)); track->SetStdTitle(); return track; } //______________________________________________________________________________ Bool_t trackIsOn(AliESDtrack* t, Int_t mask) { // Check is track-flag specified by mask are set. return (t->fFlags & mask) > 0; } //______________________________________________________________________________ void trackGetPos(AliExternalTrackParam* tp, Double_t r[3]) { // Get global position of starting point of tp. r[0] = tp->fX; r[1] = tp->fP[0]; r[2] = tp->fP[1]; Double_t cs=TMath::Cos(tp->fAlpha), sn=TMath::Sin(tp->fAlpha), x=r[0]; r[0] = x*cs - r[1]*sn; r[1] = x*sn + r[1]*cs; } //______________________________________________________________________________ void trackGetMomentum(AliExternalTrackParam* tp, Double_t p[3]) { // Return global momentum vector of starting point of tp. p[0] = tp->fP[4]; p[1] = tp->fP[2]; p[2] = tp->fP[3]; Double_t pt=1./TMath::Abs(p[0]); Double_t cs=TMath::Cos(tp->fAlpha), sn=TMath::Sin(tp->fAlpha); Double_t r=TMath::Sqrt(1 - p[1]*p[1]); p[0]=pt*(r*cs - p[1]*sn); p[1]=pt*(p[1]*cs + r*sn); p[2]=pt*p[2]; } //______________________________________________________________________________ Double_t trackGetP(AliExternalTrackParam* tp) { // Return magnitude of momentum of tp. return TMath::Sqrt(1.+ tp->fP[3]*tp->fP[3])/TMath::Abs(tp->fP[4]); } alice_esd_split.C:1 alice_esd_split.C:2 alice_esd_split.C:3 alice_esd_split.C:4 alice_esd_split.C:5 alice_esd_split.C:6 alice_esd_split.C:7 alice_esd_split.C:8 alice_esd_split.C:9 alice_esd_split.C:10 alice_esd_split.C:11 alice_esd_split.C:12 alice_esd_split.C:13 alice_esd_split.C:14 alice_esd_split.C:15 alice_esd_split.C:16 alice_esd_split.C:17 alice_esd_split.C:18 alice_esd_split.C:19 alice_esd_split.C:20 alice_esd_split.C:21 alice_esd_split.C:22 alice_esd_split.C:23 alice_esd_split.C:24 alice_esd_split.C:25 alice_esd_split.C:26 alice_esd_split.C:27 alice_esd_split.C:28 alice_esd_split.C:29 alice_esd_split.C:30 alice_esd_split.C:31 alice_esd_split.C:32 alice_esd_split.C:33 alice_esd_split.C:34 alice_esd_split.C:35 alice_esd_split.C:36 alice_esd_split.C:37 alice_esd_split.C:38 alice_esd_split.C:39 alice_esd_split.C:40 alice_esd_split.C:41 alice_esd_split.C:42 alice_esd_split.C:43 alice_esd_split.C:44 alice_esd_split.C:45 alice_esd_split.C:46 alice_esd_split.C:47 alice_esd_split.C:48 alice_esd_split.C:49 alice_esd_split.C:50 alice_esd_split.C:51 alice_esd_split.C:52 alice_esd_split.C:53 alice_esd_split.C:54 alice_esd_split.C:55 alice_esd_split.C:56 alice_esd_split.C:57 alice_esd_split.C:58 alice_esd_split.C:59 alice_esd_split.C:60 alice_esd_split.C:61 alice_esd_split.C:62 alice_esd_split.C:63 alice_esd_split.C:64 alice_esd_split.C:65 alice_esd_split.C:66 alice_esd_split.C:67 alice_esd_split.C:68 alice_esd_split.C:69 alice_esd_split.C:70 alice_esd_split.C:71 alice_esd_split.C:72 alice_esd_split.C:73 alice_esd_split.C:74 alice_esd_split.C:75 alice_esd_split.C:76 alice_esd_split.C:77 alice_esd_split.C:78 alice_esd_split.C:79 alice_esd_split.C:80 alice_esd_split.C:81 alice_esd_split.C:82 alice_esd_split.C:83 alice_esd_split.C:84 alice_esd_split.C:85 alice_esd_split.C:86 alice_esd_split.C:87 alice_esd_split.C:88 alice_esd_split.C:89 alice_esd_split.C:90 alice_esd_split.C:91 alice_esd_split.C:92 alice_esd_split.C:93 alice_esd_split.C:94 alice_esd_split.C:95 alice_esd_split.C:96 alice_esd_split.C:97 alice_esd_split.C:98 alice_esd_split.C:99 alice_esd_split.C:100 alice_esd_split.C:101 alice_esd_split.C:102 alice_esd_split.C:103 alice_esd_split.C:104 alice_esd_split.C:105 alice_esd_split.C:106 alice_esd_split.C:107 alice_esd_split.C:108 alice_esd_split.C:109 alice_esd_split.C:110 alice_esd_split.C:111 alice_esd_split.C:112 alice_esd_split.C:113 alice_esd_split.C:114 alice_esd_split.C:115 alice_esd_split.C:116 alice_esd_split.C:117 alice_esd_split.C:118 alice_esd_split.C:119 alice_esd_split.C:120 alice_esd_split.C:121 alice_esd_split.C:122 alice_esd_split.C:123 alice_esd_split.C:124 alice_esd_split.C:125 alice_esd_split.C:126 alice_esd_split.C:127 alice_esd_split.C:128 alice_esd_split.C:129 alice_esd_split.C:130 alice_esd_split.C:131 alice_esd_split.C:132 alice_esd_split.C:133 alice_esd_split.C:134 alice_esd_split.C:135 alice_esd_split.C:136 alice_esd_split.C:137 alice_esd_split.C:138 alice_esd_split.C:139 alice_esd_split.C:140 alice_esd_split.C:141 alice_esd_split.C:142 alice_esd_split.C:143 alice_esd_split.C:144 alice_esd_split.C:145 alice_esd_split.C:146 alice_esd_split.C:147 alice_esd_split.C:148 alice_esd_split.C:149 alice_esd_split.C:150 alice_esd_split.C:151 alice_esd_split.C:152 alice_esd_split.C:153 alice_esd_split.C:154 alice_esd_split.C:155 alice_esd_split.C:156 alice_esd_split.C:157 alice_esd_split.C:158 alice_esd_split.C:159 alice_esd_split.C:160 alice_esd_split.C:161 alice_esd_split.C:162 alice_esd_split.C:163 alice_esd_split.C:164 alice_esd_split.C:165 alice_esd_split.C:166 alice_esd_split.C:167 alice_esd_split.C:168 alice_esd_split.C:169 alice_esd_split.C:170 alice_esd_split.C:171 alice_esd_split.C:172 alice_esd_split.C:173 alice_esd_split.C:174 alice_esd_split.C:175 alice_esd_split.C:176 alice_esd_split.C:177 alice_esd_split.C:178 alice_esd_split.C:179 alice_esd_split.C:180 alice_esd_split.C:181 alice_esd_split.C:182 alice_esd_split.C:183 alice_esd_split.C:184 alice_esd_split.C:185 alice_esd_split.C:186 alice_esd_split.C:187 alice_esd_split.C:188 alice_esd_split.C:189 alice_esd_split.C:190 alice_esd_split.C:191 alice_esd_split.C:192 alice_esd_split.C:193 alice_esd_split.C:194 alice_esd_split.C:195 alice_esd_split.C:196 alice_esd_split.C:197 alice_esd_split.C:198 alice_esd_split.C:199 alice_esd_split.C:200 alice_esd_split.C:201 alice_esd_split.C:202 alice_esd_split.C:203 alice_esd_split.C:204 alice_esd_split.C:205 alice_esd_split.C:206 alice_esd_split.C:207 alice_esd_split.C:208 alice_esd_split.C:209 alice_esd_split.C:210 alice_esd_split.C:211 alice_esd_split.C:212 alice_esd_split.C:213 alice_esd_split.C:214 alice_esd_split.C:215 alice_esd_split.C:216 alice_esd_split.C:217 alice_esd_split.C:218 alice_esd_split.C:219 alice_esd_split.C:220 alice_esd_split.C:221 alice_esd_split.C:222 alice_esd_split.C:223 alice_esd_split.C:224 alice_esd_split.C:225 alice_esd_split.C:226 alice_esd_split.C:227 alice_esd_split.C:228 alice_esd_split.C:229 alice_esd_split.C:230 alice_esd_split.C:231 alice_esd_split.C:232 alice_esd_split.C:233 alice_esd_split.C:234 alice_esd_split.C:235 alice_esd_split.C:236 alice_esd_split.C:237 alice_esd_split.C:238 alice_esd_split.C:239 alice_esd_split.C:240 alice_esd_split.C:241 alice_esd_split.C:242 alice_esd_split.C:243 alice_esd_split.C:244 alice_esd_split.C:245 alice_esd_split.C:246 alice_esd_split.C:247 alice_esd_split.C:248 alice_esd_split.C:249 alice_esd_split.C:250 alice_esd_split.C:251 alice_esd_split.C:252 alice_esd_split.C:253 alice_esd_split.C:254 alice_esd_split.C:255 alice_esd_split.C:256 alice_esd_split.C:257 alice_esd_split.C:258 alice_esd_split.C:259 alice_esd_split.C:260 alice_esd_split.C:261 alice_esd_split.C:262 alice_esd_split.C:263 alice_esd_split.C:264 alice_esd_split.C:265 alice_esd_split.C:266 alice_esd_split.C:267 alice_esd_split.C:268 alice_esd_split.C:269 alice_esd_split.C:270 alice_esd_split.C:271 alice_esd_split.C:272 alice_esd_split.C:273 alice_esd_split.C:274 alice_esd_split.C:275 alice_esd_split.C:276 alice_esd_split.C:277 alice_esd_split.C:278 alice_esd_split.C:279 alice_esd_split.C:280 alice_esd_split.C:281 alice_esd_split.C:282 alice_esd_split.C:283 alice_esd_split.C:284 alice_esd_split.C:285 alice_esd_split.C:286 alice_esd_split.C:287 alice_esd_split.C:288 alice_esd_split.C:289 alice_esd_split.C:290 alice_esd_split.C:291 alice_esd_split.C:292 alice_esd_split.C:293 alice_esd_split.C:294 alice_esd_split.C:295 alice_esd_split.C:296 alice_esd_split.C:297 alice_esd_split.C:298 alice_esd_split.C:299 alice_esd_split.C:300 alice_esd_split.C:301 alice_esd_split.C:302 alice_esd_split.C:303 alice_esd_split.C:304 alice_esd_split.C:305 alice_esd_split.C:306 alice_esd_split.C:307 alice_esd_split.C:308 alice_esd_split.C:309 alice_esd_split.C:310 alice_esd_split.C:311 alice_esd_split.C:312 alice_esd_split.C:313 alice_esd_split.C:314 alice_esd_split.C:315 alice_esd_split.C:316 alice_esd_split.C:317 alice_esd_split.C:318 alice_esd_split.C:319 alice_esd_split.C:320 alice_esd_split.C:321 alice_esd_split.C:322 alice_esd_split.C:323 alice_esd_split.C:324 alice_esd_split.C:325 alice_esd_split.C:326 alice_esd_split.C:327 alice_esd_split.C:328 alice_esd_split.C:329 alice_esd_split.C:330 alice_esd_split.C:331 alice_esd_split.C:332 alice_esd_split.C:333 alice_esd_split.C:334 alice_esd_split.C:335 alice_esd_split.C:336 alice_esd_split.C:337 alice_esd_split.C:338 alice_esd_split.C:339 alice_esd_split.C:340 alice_esd_split.C:341 alice_esd_split.C:342 alice_esd_split.C:343 alice_esd_split.C:344 alice_esd_split.C:345 alice_esd_split.C:346 alice_esd_split.C:347 alice_esd_split.C:348 alice_esd_split.C:349 alice_esd_split.C:350 alice_esd_split.C:351 alice_esd_split.C:352 alice_esd_split.C:353 alice_esd_split.C:354 alice_esd_split.C:355 alice_esd_split.C:356 alice_esd_split.C:357 alice_esd_split.C:358 alice_esd_split.C:359 alice_esd_split.C:360 alice_esd_split.C:361 alice_esd_split.C:362 alice_esd_split.C:363 alice_esd_split.C:364 alice_esd_split.C:365 alice_esd_split.C:366 alice_esd_split.C:367 alice_esd_split.C:368 alice_esd_split.C:369 alice_esd_split.C:370 alice_esd_split.C:371 alice_esd_split.C:372 alice_esd_split.C:373 alice_esd_split.C:374 alice_esd_split.C:375 alice_esd_split.C:376 alice_esd_split.C:377 alice_esd_split.C:378 alice_esd_split.C:379 alice_esd_split.C:380 alice_esd_split.C:381 alice_esd_split.C:382 alice_esd_split.C:383 alice_esd_split.C:384 alice_esd_split.C:385 alice_esd_split.C:386 alice_esd_split.C:387 alice_esd_split.C:388 alice_esd_split.C:389 alice_esd_split.C:390 alice_esd_split.C:391 alice_esd_split.C:392 alice_esd_split.C:393 alice_esd_split.C:394 alice_esd_split.C:395 alice_esd_split.C:396 alice_esd_split.C:397 alice_esd_split.C:398 alice_esd_split.C:399 alice_esd_split.C:400 alice_esd_split.C:401 alice_esd_split.C:402 alice_esd_split.C:403 alice_esd_split.C:404 alice_esd_split.C:405 alice_esd_split.C:406 alice_esd_split.C:407 alice_esd_split.C:408 alice_esd_split.C:409 alice_esd_split.C:410 alice_esd_split.C:411 alice_esd_split.C:412 alice_esd_split.C:413 alice_esd_split.C:414 alice_esd_split.C:415 alice_esd_split.C:416 alice_esd_split.C:417 alice_esd_split.C:418 alice_esd_split.C:419 alice_esd_split.C:420 alice_esd_split.C:421 alice_esd_split.C:422 alice_esd_split.C:423 alice_esd_split.C:424 alice_esd_split.C:425 alice_esd_split.C:426 alice_esd_split.C:427 alice_esd_split.C:428 alice_esd_split.C:429 alice_esd_split.C:430 alice_esd_split.C:431 alice_esd_split.C:432 alice_esd_split.C:433 alice_esd_split.C:434 alice_esd_split.C:435 alice_esd_split.C:436 alice_esd_split.C:437 alice_esd_split.C:438 alice_esd_split.C:439 alice_esd_split.C:440 alice_esd_split.C:441 alice_esd_split.C:442 alice_esd_split.C:443 alice_esd_split.C:444 alice_esd_split.C:445 alice_esd_split.C:446 alice_esd_split.C:447 alice_esd_split.C:448 alice_esd_split.C:449 alice_esd_split.C:450 alice_esd_split.C:451 alice_esd_split.C:452 alice_esd_split.C:453 alice_esd_split.C:454 alice_esd_split.C:455 alice_esd_split.C:456 alice_esd_split.C:457 alice_esd_split.C:458 alice_esd_split.C:459 alice_esd_split.C:460 alice_esd_split.C:461 alice_esd_split.C:462 alice_esd_split.C:463 alice_esd_split.C:464 alice_esd_split.C:465 alice_esd_split.C:466 alice_esd_split.C:467 alice_esd_split.C:468 alice_esd_split.C:469 alice_esd_split.C:470 alice_esd_split.C:471 alice_esd_split.C:472 alice_esd_split.C:473 alice_esd_split.C:474 alice_esd_split.C:475 alice_esd_split.C:476 alice_esd_split.C:477 alice_esd_split.C:478 alice_esd_split.C:479 alice_esd_split.C:480 alice_esd_split.C:481 alice_esd_split.C:482 alice_esd_split.C:483 alice_esd_split.C:484 alice_esd_split.C:485 alice_esd_split.C:486 alice_esd_split.C:487 alice_esd_split.C:488 alice_esd_split.C:489 alice_esd_split.C:490 alice_esd_split.C:491 alice_esd_split.C:492 alice_esd_split.C:493 alice_esd_split.C:494 alice_esd_split.C:495 alice_esd_split.C:496 alice_esd_split.C:497 alice_esd_split.C:498 alice_esd_split.C:499 alice_esd_split.C:500 alice_esd_split.C:501 alice_esd_split.C:502 alice_esd_split.C:503 alice_esd_split.C:504 alice_esd_split.C:505 alice_esd_split.C:506 alice_esd_split.C:507 alice_esd_split.C:508 alice_esd_split.C:509 alice_esd_split.C:510 alice_esd_split.C:511 alice_esd_split.C:512 alice_esd_split.C:513 alice_esd_split.C:514 alice_esd_split.C:515 alice_esd_split.C:516 alice_esd_split.C:517 alice_esd_split.C:518 alice_esd_split.C:519 alice_esd_split.C:520 alice_esd_split.C:521 alice_esd_split.C:522 alice_esd_split.C:523 alice_esd_split.C:524 alice_esd_split.C:525 alice_esd_split.C:526 alice_esd_split.C:527 alice_esd_split.C:528 alice_esd_split.C:529 alice_esd_split.C:530 alice_esd_split.C:531 alice_esd_split.C:532 alice_esd_split.C:533 alice_esd_split.C:534 alice_esd_split.C:535 alice_esd_split.C:536 |
|