SplitGLView.C: Helper classes for the alice_esd_split.C demo. | Event Display | alice_esd_html_summary.C: Html table and event summary for alice_esd.C |
// @(#)root/eve:$Id: alice_esd.C 28586 2009-05-12 19:07:40Z matevz $ // Author: Matevz Tadel // Complex example showing ALICE ESD track visualization. /* alice_esd.C - a simple event-display for ALICE ESD tracks and clusters ------------------------------------------------------------------------ ------------------------------------------------------------------------ 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. */ // 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 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"; // Temporarily disable reading of ESD friend. // There seems to be no way to get it working without AliRoot. // const char* esd_friends_file_name = "http://root.cern.ch/files/alice_ESDfriends.root"; const char* esd_friends_file_name = 0; const char* esd_geom_file_name = "http://root.cern.ch/files/alice_ESDgeometry.root"; // For testing // const char* esd_file_name = "AliESDs.root"; // const char* esd_friends_file_name = "AliESDfriends.root"; TFile *esd_file = 0; TFile *esd_friends_file = 0; TTree *esd_tree = 0; AliESDEvent *esd = 0; TList *esd_objs = 0; AliESDfriend *esd_friend = 0; Int_t esd_event_id = 0; // Current event id. TEveTrackList *gTrackList = 0; TEveGeoShape *gGeomGentle = 0; // Implemented in MultiView.C class MultiView; MultiView* gMultiView = 0; /******************************************************************************/ // Initialization and steering functions /******************************************************************************/ //______________________________________________________________________________ void alice_esd() { // 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. const TString weh("alice_esd()"); if (gROOT->LoadMacro("MultiView.C+") != 0) { Error(weh, "Failed loading MultiView.C in compiled mode."); return; } TFile::SetCacheFileDir("."); if (!alice_esd_loadlib("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; esd_tree = (TTree*) esd_file->Get("esdTree"); esd = (AliESDEvent*) esd_tree->GetUserInfo()->FindObject("AliESDEvent"); esd_objs = esd->fESDObjects; if (esd_friends_file_name != 0) { printf("*** Opening ESD-friends ***\n"); esd_friends_file = TFile::Open(esd_friends_file_name, "CACHEREAD"); if (!esd_friends_file) return; esd_tree->SetBranchStatus ("ESDfriend*", 1); } // Set the branch addresses. { TIter next(esd_objs); TObject *el; while ((el = (TNamed*)next())) { TString bname(el->GetName()); if (bname == "AliESDfriend") { // AliESDfriend needs special treatment. TBranch *br = esd_tree->GetBranch("ESDfriend."); br->SetAddress(esd_objs->GetObjectRef(el)); } else { TBranch *br = esd_tree->GetBranch(bname); if (br) { br->SetAddress(esd_objs->GetObjectRef(el)); } else { br = esd_tree->GetBranch(bname + "."); if (br) { br->SetAddress(esd_objs->GetObjectRef(el)); } else { Warning("AliESDEvent::ReadFromTree() No Branch found with Name '%s' or '%s.'.", bname.Data(),bname.Data()); } } } } } TEveManager::Create(); { // Simple geometry TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); if (!geom) return; TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); gGeomGentle = TEveGeoShape::ImportShapeExtract(gse, 0); geom->Close(); delete geom; gEve->AddGlobalElement(gGeomGentle); } // Standard multi-view //===================== gMultiView = new MultiView; gMultiView->ImportGeomRPhi(gGeomGentle); gMultiView->ImportGeomRhoZ(gGeomGentle); // HTML summary view //=================== gROOT->LoadMacro("alice_esd_html_summary.C"); fgHtmlSummary = new HtmlSummary("Alice Event Display Summary Table"); slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); fgHtml = new TGHtml(0, 100, 100); TEveWindowFrame *wf = slot->MakeFrame(fgHtml); fgHtml->MapSubwindows(); wf->SetElementName("Summary"); // Final stuff //============= gEve->GetBrowser()->GetTabRight()->SetTab(1); make_gui(); load_event(); gEve->Redraw3D(kTRUE); // Reset camera after the first event has been shown. } //______________________________________________________________________________ Bool_t alice_esd_loadlib(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(esd_file_name, "CACHEREAD"); if (f == 0) return kFALSE; TFile *f2 = TFile::Open(esd_friends_file_name, "CACHEREAD"); TTree *tree = (TTree*) f->Get("esdTree"); tree->SetBranchStatus ("ESDfriend*", 1); 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); gEve->GetViewers()->DeleteAnnotations(); if (gTrackList) gTrackList->DestroyElements(); esd_tree->GetEntry(esd_event_id); // esd_tree->Show(); alice_esd_read(); TEveElement* top = gEve->GetCurrentEvent(); gMultiView->DestroyEventRPhi(); gMultiView->ImportEventRPhi(top); gMultiView->DestroyEventRhoZ(); gMultiView->ImportEventRhoZ(top); update_html_summary(); gEve->Redraw3D(kFALSE, kTRUE); } /******************************************************************************/ // 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(); } else { printf("Already at last event.\n"); } } void Bck() { if (esd_event_id > 0) { --esd_event_id; load_event(); } else { printf("Already at first event.\n"); } } }; //______________________________________________________________________________ void make_gui() { // Create minimal GUI for event navigation. TEveBrowser* browser = gEve->GetBrowser(); 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); b->Connect("Clicked()", "EvNavHandler", fh, "Bck()"); b = new TGPictureButton(hf, gClient->GetPicture(icondir + "GoForward.gif")); hf->AddFrame(b); b->Connect("Clicked()", "EvNavHandler", fh, "Fwd()"); } frmMain->AddFrame(hf); 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_objs->FindObject("AliESDRun"); TClonesArray *tracks = (TClonesArray*) esd_objs->FindObject("Tracks"); // This needs further investigation. Clusters not shown. // esd_friend = (AliESDfriend*) esd_objs->FindObject("AliESDfriend"); // printf("Friend %p, n_tracks:%d\n", esd_friend, esd_friend->fTracks.GetEntries()); if (gTrackList == 0) { gTrackList = new TEveTrackList("ESD Tracks"); gTrackList->SetMainColor(6); gTrackList->SetMarkerColor(kYellow); gTrackList->SetMarkerStyle(4); gTrackList->SetMarkerSize(0.5); gEve->AddElement(gTrackList); } TEveTrackPropagator* trkProp = gTrackList->GetPropagator(); trkProp->SetMagField( 0.1 * esdrun->fMagneticField ); // kGaus to Tesla 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(gTrackList); gTrackList->AddElement(track); // This needs further investigation. Clusters not shown. // if (frnd) // { // AliESDfriendTrack* ft = (AliESDfriendTrack*) frnd->fTracks->At(n); // printf("%d friend = %p\n", ft); // } } gTrackList->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.C:1 alice_esd.C:2 alice_esd.C:3 alice_esd.C:4 alice_esd.C:5 alice_esd.C:6 alice_esd.C:7 alice_esd.C:8 alice_esd.C:9 alice_esd.C:10 alice_esd.C:11 alice_esd.C:12 alice_esd.C:13 alice_esd.C:14 alice_esd.C:15 alice_esd.C:16 alice_esd.C:17 alice_esd.C:18 alice_esd.C:19 alice_esd.C:20 alice_esd.C:21 alice_esd.C:22 alice_esd.C:23 alice_esd.C:24 alice_esd.C:25 alice_esd.C:26 alice_esd.C:27 alice_esd.C:28 alice_esd.C:29 alice_esd.C:30 alice_esd.C:31 alice_esd.C:32 alice_esd.C:33 alice_esd.C:34 alice_esd.C:35 alice_esd.C:36 alice_esd.C:37 alice_esd.C:38 alice_esd.C:39 alice_esd.C:40 alice_esd.C:41 alice_esd.C:42 alice_esd.C:43 alice_esd.C:44 alice_esd.C:45 alice_esd.C:46 alice_esd.C:47 alice_esd.C:48 alice_esd.C:49 alice_esd.C:50 alice_esd.C:51 alice_esd.C:52 alice_esd.C:53 alice_esd.C:54 alice_esd.C:55 alice_esd.C:56 alice_esd.C:57 alice_esd.C:58 alice_esd.C:59 alice_esd.C:60 alice_esd.C:61 alice_esd.C:62 alice_esd.C:63 alice_esd.C:64 alice_esd.C:65 alice_esd.C:66 alice_esd.C:67 alice_esd.C:68 alice_esd.C:69 alice_esd.C:70 alice_esd.C:71 alice_esd.C:72 alice_esd.C:73 alice_esd.C:74 alice_esd.C:75 alice_esd.C:76 alice_esd.C:77 alice_esd.C:78 alice_esd.C:79 alice_esd.C:80 alice_esd.C:81 alice_esd.C:82 alice_esd.C:83 alice_esd.C:84 alice_esd.C:85 alice_esd.C:86 alice_esd.C:87 alice_esd.C:88 alice_esd.C:89 alice_esd.C:90 alice_esd.C:91 alice_esd.C:92 alice_esd.C:93 alice_esd.C:94 alice_esd.C:95 alice_esd.C:96 alice_esd.C:97 alice_esd.C:98 alice_esd.C:99 alice_esd.C:100 alice_esd.C:101 alice_esd.C:102 alice_esd.C:103 alice_esd.C:104 alice_esd.C:105 alice_esd.C:106 alice_esd.C:107 alice_esd.C:108 alice_esd.C:109 alice_esd.C:110 alice_esd.C:111 alice_esd.C:112 alice_esd.C:113 alice_esd.C:114 alice_esd.C:115 alice_esd.C:116 alice_esd.C:117 alice_esd.C:118 alice_esd.C:119 alice_esd.C:120 alice_esd.C:121 alice_esd.C:122 alice_esd.C:123 alice_esd.C:124 alice_esd.C:125 alice_esd.C:126 alice_esd.C:127 alice_esd.C:128 alice_esd.C:129 alice_esd.C:130 alice_esd.C:131 alice_esd.C:132 alice_esd.C:133 alice_esd.C:134 alice_esd.C:135 alice_esd.C:136 alice_esd.C:137 alice_esd.C:138 alice_esd.C:139 alice_esd.C:140 alice_esd.C:141 alice_esd.C:142 alice_esd.C:143 alice_esd.C:144 alice_esd.C:145 alice_esd.C:146 alice_esd.C:147 alice_esd.C:148 alice_esd.C:149 alice_esd.C:150 alice_esd.C:151 alice_esd.C:152 alice_esd.C:153 alice_esd.C:154 alice_esd.C:155 alice_esd.C:156 alice_esd.C:157 alice_esd.C:158 alice_esd.C:159 alice_esd.C:160 alice_esd.C:161 alice_esd.C:162 alice_esd.C:163 alice_esd.C:164 alice_esd.C:165 alice_esd.C:166 alice_esd.C:167 alice_esd.C:168 alice_esd.C:169 alice_esd.C:170 alice_esd.C:171 alice_esd.C:172 alice_esd.C:173 alice_esd.C:174 alice_esd.C:175 alice_esd.C:176 alice_esd.C:177 alice_esd.C:178 alice_esd.C:179 alice_esd.C:180 alice_esd.C:181 alice_esd.C:182 alice_esd.C:183 alice_esd.C:184 alice_esd.C:185 alice_esd.C:186 alice_esd.C:187 alice_esd.C:188 alice_esd.C:189 alice_esd.C:190 alice_esd.C:191 alice_esd.C:192 alice_esd.C:193 alice_esd.C:194 alice_esd.C:195 alice_esd.C:196 alice_esd.C:197 alice_esd.C:198 alice_esd.C:199 alice_esd.C:200 alice_esd.C:201 alice_esd.C:202 alice_esd.C:203 alice_esd.C:204 alice_esd.C:205 alice_esd.C:206 alice_esd.C:207 alice_esd.C:208 alice_esd.C:209 alice_esd.C:210 alice_esd.C:211 alice_esd.C:212 alice_esd.C:213 alice_esd.C:214 alice_esd.C:215 alice_esd.C:216 alice_esd.C:217 alice_esd.C:218 alice_esd.C:219 alice_esd.C:220 alice_esd.C:221 alice_esd.C:222 alice_esd.C:223 alice_esd.C:224 alice_esd.C:225 alice_esd.C:226 alice_esd.C:227 alice_esd.C:228 alice_esd.C:229 alice_esd.C:230 alice_esd.C:231 alice_esd.C:232 alice_esd.C:233 alice_esd.C:234 alice_esd.C:235 alice_esd.C:236 alice_esd.C:237 alice_esd.C:238 alice_esd.C:239 alice_esd.C:240 alice_esd.C:241 alice_esd.C:242 alice_esd.C:243 alice_esd.C:244 alice_esd.C:245 alice_esd.C:246 alice_esd.C:247 alice_esd.C:248 alice_esd.C:249 alice_esd.C:250 alice_esd.C:251 alice_esd.C:252 alice_esd.C:253 alice_esd.C:254 alice_esd.C:255 alice_esd.C:256 alice_esd.C:257 alice_esd.C:258 alice_esd.C:259 alice_esd.C:260 alice_esd.C:261 alice_esd.C:262 alice_esd.C:263 alice_esd.C:264 alice_esd.C:265 alice_esd.C:266 alice_esd.C:267 alice_esd.C:268 alice_esd.C:269 alice_esd.C:270 alice_esd.C:271 alice_esd.C:272 alice_esd.C:273 alice_esd.C:274 alice_esd.C:275 alice_esd.C:276 alice_esd.C:277 alice_esd.C:278 alice_esd.C:279 alice_esd.C:280 alice_esd.C:281 alice_esd.C:282 alice_esd.C:283 alice_esd.C:284 alice_esd.C:285 alice_esd.C:286 alice_esd.C:287 alice_esd.C:288 alice_esd.C:289 alice_esd.C:290 alice_esd.C:291 alice_esd.C:292 alice_esd.C:293 alice_esd.C:294 alice_esd.C:295 alice_esd.C:296 alice_esd.C:297 alice_esd.C:298 alice_esd.C:299 alice_esd.C:300 alice_esd.C:301 alice_esd.C:302 alice_esd.C:303 alice_esd.C:304 alice_esd.C:305 alice_esd.C:306 alice_esd.C:307 alice_esd.C:308 alice_esd.C:309 alice_esd.C:310 alice_esd.C:311 alice_esd.C:312 alice_esd.C:313 alice_esd.C:314 alice_esd.C:315 alice_esd.C:316 alice_esd.C:317 alice_esd.C:318 alice_esd.C:319 alice_esd.C:320 alice_esd.C:321 alice_esd.C:322 alice_esd.C:323 alice_esd.C:324 alice_esd.C:325 alice_esd.C:326 alice_esd.C:327 alice_esd.C:328 alice_esd.C:329 alice_esd.C:330 alice_esd.C:331 alice_esd.C:332 alice_esd.C:333 alice_esd.C:334 alice_esd.C:335 alice_esd.C:336 alice_esd.C:337 alice_esd.C:338 alice_esd.C:339 alice_esd.C:340 alice_esd.C:341 alice_esd.C:342 alice_esd.C:343 alice_esd.C:344 alice_esd.C:345 alice_esd.C:346 alice_esd.C:347 alice_esd.C:348 alice_esd.C:349 alice_esd.C:350 alice_esd.C:351 alice_esd.C:352 alice_esd.C:353 alice_esd.C:354 alice_esd.C:355 alice_esd.C:356 alice_esd.C:357 alice_esd.C:358 alice_esd.C:359 alice_esd.C:360 alice_esd.C:361 alice_esd.C:362 alice_esd.C:363 alice_esd.C:364 alice_esd.C:365 alice_esd.C:366 alice_esd.C:367 alice_esd.C:368 alice_esd.C:369 alice_esd.C:370 alice_esd.C:371 alice_esd.C:372 alice_esd.C:373 alice_esd.C:374 alice_esd.C:375 alice_esd.C:376 alice_esd.C:377 alice_esd.C:378 alice_esd.C:379 alice_esd.C:380 alice_esd.C:381 alice_esd.C:382 alice_esd.C:383 alice_esd.C:384 alice_esd.C:385 alice_esd.C:386 alice_esd.C:387 alice_esd.C:388 alice_esd.C:389 alice_esd.C:390 alice_esd.C:391 alice_esd.C:392 alice_esd.C:393 alice_esd.C:394 alice_esd.C:395 alice_esd.C:396 alice_esd.C:397 alice_esd.C:398 alice_esd.C:399 alice_esd.C:400 alice_esd.C:401 alice_esd.C:402 alice_esd.C:403 alice_esd.C:404 alice_esd.C:405 alice_esd.C:406 alice_esd.C:407 alice_esd.C:408 alice_esd.C:409 alice_esd.C:410 alice_esd.C:411 alice_esd.C:412 alice_esd.C:413 alice_esd.C:414 alice_esd.C:415 alice_esd.C:416 alice_esd.C:417 alice_esd.C:418 alice_esd.C:419 alice_esd.C:420 alice_esd.C:421 alice_esd.C:422 alice_esd.C:423 alice_esd.C:424 alice_esd.C:425 alice_esd.C:426 alice_esd.C:427 alice_esd.C:428 alice_esd.C:429 alice_esd.C:430 alice_esd.C:431 alice_esd.C:432 alice_esd.C:433 alice_esd.C:434 alice_esd.C:435 alice_esd.C:436 alice_esd.C:437 alice_esd.C:438 alice_esd.C:439 alice_esd.C:440 alice_esd.C:441 alice_esd.C:442 alice_esd.C:443 alice_esd.C:444 alice_esd.C:445 alice_esd.C:446 alice_esd.C:447 alice_esd.C:448 alice_esd.C:449 alice_esd.C:450 alice_esd.C:451 alice_esd.C:452 alice_esd.C:453 alice_esd.C:454 alice_esd.C:455 alice_esd.C:456 alice_esd.C:457 alice_esd.C:458 alice_esd.C:459 alice_esd.C:460 alice_esd.C:461 alice_esd.C:462 alice_esd.C:463 alice_esd.C:464 alice_esd.C:465 alice_esd.C:466 alice_esd.C:467 alice_esd.C:468 alice_esd.C:469 alice_esd.C:470 alice_esd.C:471 alice_esd.C:472 alice_esd.C:473 alice_esd.C:474 alice_esd.C:475 alice_esd.C:476 alice_esd.C:477 alice_esd.C:478 alice_esd.C:479 alice_esd.C:480 alice_esd.C:481 alice_esd.C:482 alice_esd.C:483 alice_esd.C:484 alice_esd.C:485 alice_esd.C:486 alice_esd.C:487 alice_esd.C:488 alice_esd.C:489 alice_esd.C:490 alice_esd.C:491 alice_esd.C:492 alice_esd.C:493 alice_esd.C:494 alice_esd.C:495 alice_esd.C:496 alice_esd.C:497 alice_esd.C:498 alice_esd.C:499 alice_esd.C:500 alice_esd.C:501 alice_esd.C:502 alice_esd.C:503 alice_esd.C:504 alice_esd.C:505 alice_esd.C:506 alice_esd.C:507 alice_esd.C:508 alice_esd.C:509 alice_esd.C:510 alice_esd.C:511 alice_esd.C:512 alice_esd.C:513 alice_esd.C:514 alice_esd.C:515 alice_esd.C:516 alice_esd.C:517 alice_esd.C:518 alice_esd.C:519 alice_esd.C:520 alice_esd.C:521 alice_esd.C:522 alice_esd.C:523 alice_esd.C:524 alice_esd.C:525 alice_esd.C:526 alice_esd.C:527 alice_esd.C:528 alice_esd.C:529 alice_esd.C:530 alice_esd.C:531 alice_esd.C:532 alice_esd.C:533 alice_esd.C:534 alice_esd.C:535 alice_esd.C:536 alice_esd.C:537 alice_esd.C:538 |
|