ROOT logo
void tzero15tracks(const char* datafile, Float_t globalTimeRes=1.2e-10)
{
  
  //
  // Calculate the t0 distribution 
  // selecting 15 tracks
  // (primary particles reaching TOF)
  // NB: see the description of the analogous AliTOFT0 class
  // NB II: apply this macro to a realistic Pb-Pb event (e.g. Hijing event)
  // Use case
  // - start root
  // root [0] .L tzero15tracksopt.C
  // // exec the macro with the default time resolution 120 ps
  // root [1] tzero15tracksopt("hij25evCentralTOFv4T0Set10.04T.root")

  // // exec the macro with 150 ps global time resolution
  // // NB: time resolution has to be given in [s]
  // root [1] tzero15tracksopt("hij25evCentralTOFv4T0Set10.04T.root", 1.5e-10))


  // Dynamically link some shared libs
  if (gClassTable->GetID("AliRun") < 0) {
    gROOT->LoadMacro("loadlibs.C");
    loadlibs();
  }
  
  // Connect the Root Galice file containing Geometry, Kine and Hits
  Int_t ngood;
  Int_t nmisidentified=0;
  Int_t nmisidentified0=0;
  Int_t nmisidentified1=0;
  Int_t nmisidentified2=0;
  Int_t nmisidentified3=0;
  Int_t nmisidentified4=0;
  Int_t nmisidentified5=0;
  Int_t nmisidentified6=0;
  Int_t nmisidentified7=0;
  Int_t nmisidentified8=0;
  Int_t nmisidentified9=0;
  Int_t nmisidentified10=0;
  Int_t nmisidentified11=0;
  Int_t nmisidentified12=0;
  Int_t nmisidentified13=0;
  Int_t nmisidentified14=0;
  Int_t nbytes = 0;
  Int_t ipartold = -1;
  Int_t dblehit = 0;
  Int_t j,hit,ipart;
  Int_t nhits;
  Int_t selected=0;
  Int_t istop=0;
  const Float_t timeresolution=globalTimeRes; // in [s] 
  Float_t timeresolutioninns=timeresolution*(1.e+9); // convert in [ns]
  cout << "Global Time Resolution " << timeresolutioninns << " ns" << endl; //

  // output (histos!) filename
  char outFileName[100];
  strcpy(outFileName,"ht015tr");
  strcat(outFileName,datafile);

  gBenchmark->Start("TOFT0");
  
  TH1F* htzerobest= new TH1F("htzerobest","T0 for best assignment",200,-1.,1.);
  TH1F* hchibest  = new TH1F("hchibest","ChiSquare Min Distribution",80,0.,40.);
  TH1F* hchibestconflevel  = new TH1F("hchibestconflevel","ChiSquare Min Confidence Level",10,0.,1.);
  
  Float_t t0best=999.;
  Int_t assparticle[15]={3,3,3,3,3,3,3,3,3,3,3,3,3,3,3};
  Int_t truparticle[15]={3,3,3,3,3,3,3,3,3,3,3,3,3,3,3};
  Float_t timeofflight[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
  Float_t momentum[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
  Float_t timezero[15];
  Float_t weightedtimezero[15];
  Float_t beta[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
  Float_t sqMomError[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
  Float_t sqTrackError[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
  Float_t massarray[3]={0.13957,0.493677,0.9382723};
  Float_t chisquare=999.;
  Float_t tracktoflen[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
  TRandom* rnd = new TRandom();
  TParticle *particle;
  AliTOFhitT0  *tofHit;
  
  TFile *file = TFile::Open(datafile,"old");
  
  // Get AliRun object from file or create it if not on file
  gAlice = (AliRun*)file->Get("gAlice");
  
  // Import the Kine and Hits Trees for the event evNumber in the file

  Int_t nallevents = (Int_t) gAlice->TreeE()->GetEntries();
  
  for (Int_t nev=0; nev<nallevents;nev++) {
    
    Int_t nparticles = gAlice->GetEvent(nev);
    if (nparticles <= 0) return;
    //     ngood=0;
    // Get pointers to Alice detectors and Hits containers
    
    AliDetector *TOF  = gAlice->GetDetector("TOF");
    TObjArray *Particles = gAlice->Particles();
    
    if (TOF) TClonesArray *TOFhits   = TOF->Hits();
    
    TTree *TH = gAlice->TreeH();
    Int_t ntracks = TH->GetEntries();
    
    
    // Start loop on primary tracks in the hits containers
    Int_t lasttrack=-1;
    Int_t nset=0;
    for (Int_t track=lasttrack+1; track<ntracks;track++) {
      
      if(nset>=3) break; // check on the number of set analyzed
      
      gAlice->ResetHits();
      nbytes += TH->GetEvent(track);
      
      // =======>Histogram TOF
      if (TOF) {
	nhits = TOFhits->GetEntriesFast();
	
	for (hit=0;hit<nhits;hit++) {
	  
	  tofHit   = (AliTOFhitT0*)TOFhits->UncheckedAt(hit);
	  ipart    = tofHit->GetTrack();
	  
	  // check to discard the case when the same particle is selected more than one
	  // time 
	  
	  if (ipart != ipartold){
	    
	    particle = (TParticle*)gAlice->Particle(ipart);
	    
	    Float_t idealtime=tofHit->GetTof();
	    //	   Float_t time=idealtime;
	    Float_t time   = rnd->Gaus(idealtime, timeresolution);
	    Float_t toflen=tofHit->GetLen();
	    toflen=toflen/100.; // toflen given in m because GEANT gives cm!
	    Int_t pdg   = particle->GetPdgCode();
	    Int_t abspdg   =TMath::Abs(pdg);
	    Float_t idealmom  = particle->P();
	    Float_t momres=idealmom*0.025; // 2.5% res token into account for all momenta
	    //Float_t mom =idealmom+2.*(rnd->Rndm()-0.5)*momres;
	    Float_t mom =rnd->Gaus(idealmom,momres);
	    Bool_t isgoodpart=(abspdg==211 || abspdg==2212 || abspdg==321);
	    
	    time*=1.e+9; // tof given in nanoseconds	   
	    if (particle->GetFirstMother() < 0 && isgoodpart && mom<=1.75 && mom>=1.25){
	      
	      selected+=1;
	      istop=selected;
	      if(istop>15) break;
	      Int_t index=selected-1;
	      timeofflight[index]=time;
	      tracktoflen[index]=toflen;
	      momentum[index]=mom;
	      switch (abspdg) {
	      case 211:
		truparticle[index]=0;
		break ;
	      case 321:
		truparticle[index]=1;
		break ;
	      case 2212: 
		truparticle[index]=2;
		break ;
	      }
	      
	    }
	    ipartold = ipart;
	    
	    if(istop==15){ // start analysis on current set
	      nset+=1;
	      lasttrack=track;
	      istop=0;
	      selected=0;
	      cout << "starting t0 calculation for current set" << endl;
	      for (Int_t i1=0; i1<3;i1++) {
		beta[0]=momentum[0]/TMath::Sqrt(massarray[i1]*massarray[i1]+momentum[0]*momentum[0]);
		for (Int_t i2=0; i2<3;i2++) { 
		  beta[1]=momentum[1]/TMath::Sqrt(massarray[i2]*massarray[i2]+momentum[1]*momentum[1]);
		  for (Int_t i3=0; i3<3;i3++) {
		    beta[2]=momentum[2]/TMath::Sqrt(massarray[i3]*massarray[i3]+momentum[2]*momentum[2]);
		    for (Int_t i4=0; i4<3;i4++) {
		      beta[3]=momentum[3]/TMath::Sqrt(massarray[i4]*massarray[i4]+momentum[3]*momentum[3]);
		      for (Int_t i5=0; i5<3;i5++) {
			beta[4]=momentum[4]/TMath::Sqrt(massarray[i5]*massarray[i5]+momentum[4]*momentum[4]);
			for (Int_t i6=0; i6<3;i6++) {
			  beta[5]=momentum[5]/TMath::Sqrt(massarray[i6]*massarray[i6]+momentum[5]*momentum[5]);
			  for (Int_t i7=0; i7<3;i7++) { 
			    beta[6]=momentum[6]/TMath::Sqrt(massarray[i7]*massarray[i7]+momentum[6]*momentum[6]);
			    for (Int_t i8=0; i8<3;i8++) {
			      beta[7]=momentum[7]/TMath::Sqrt(massarray[i8]*massarray[i8]+momentum[7]*momentum[7]);
			      for (Int_t i9=0; i9<3;i9++) {
				beta[8]=momentum[8]/TMath::Sqrt(massarray[i9]*massarray[i9]+momentum[8]*momentum[8]);
				for (Int_t i10=0; i10<3;i10++) { 	
				  beta[9]=momentum[9]/TMath::Sqrt(massarray[i10]*massarray[i10]+momentum[9]*momentum[9]);
				  for (Int_t i11=0; i11<3;i11++) {
				    beta[10]=momentum[10]/TMath::Sqrt(massarray[i11]*massarray[i11]+momentum[10]*momentum[10]);
				    for (Int_t i12=0; i12<3;i12++) { 
				      beta[11]=momentum[11]/TMath::Sqrt(massarray[i12]*massarray[i12]+momentum[11]*momentum[11]);
				      for (Int_t i13=0; i13<3;i13++) {
					beta[12]=momentum[12]/TMath::Sqrt(massarray[i13]*massarray[i13]+momentum[12]*momentum[12]);
					for (Int_t i14=0; i14<3;i14++) {
					  beta[13]=momentum[13]/TMath::Sqrt(massarray[i14]*massarray[i14]+momentum[13]*momentum[13]);
					  for (Int_t i15=0; i15<3;i15++) {
					    beta[14]=momentum[14]/TMath::Sqrt(massarray[i15]*massarray[i15]+momentum[14]*momentum[14]);
				    
					    Float_t meantzero=0.;
					    Float_t sumAllweights=0.;
					    for (Int_t itz=0; itz<15;itz++) {
					      sqMomError[itz]=((1.-beta[itz]*beta[itz])*0.025)*((1.-beta[itz]*beta[itz])*0.025)*(tracktoflen[itz]/(0.299792*beta[itz]))*(tracktoflen[itz]/(0.299792*beta[itz])); // this gives the square of the momentum error in nanoseconds
					      sqTrackError[itz]=(timeresolutioninns*timeresolutioninns+sqMomError[itz]); // total error for the current track
					      sumAllweights+=1./sqTrackError[itz];
					      timezero[itz]=(tracktoflen[itz]/(beta[itz]*0.299792))-timeofflight[itz];
					      weightedtimezero[itz]=((tracktoflen[itz]/(beta[itz]*0.299792))-timeofflight[itz])/sqTrackError[itz];// weighted time zero for current track
					      meantzero+=weightedtimezero[itz];
					    }
					    
					    meantzero=meantzero/sumAllweights; // it is given in [ns]
					    
					    Float_t dummychisquare=0.;
					    // calculate the chisquare for the current assignment
					    for (Int_t itz=0; itz<15;itz++) {
					      dummychisquare+=(timezero[itz]-meantzero)*(timezero[itz]-meantzero)/sqTrackError[itz];
					    }
					    
					    
					    if(dummychisquare<=chisquare){
					      assparticle[0]=i1;
					      assparticle[1]=i2;
					      assparticle[2]=i3;
					      assparticle[3]=i4;
					      assparticle[4]=i5;
					      assparticle[5]=i6;
					      assparticle[6]=i7;
					      assparticle[7]=i8;
					      assparticle[8]=i9;
					      assparticle[9]=i10;
					      assparticle[10]=i11;
					      assparticle[11]=i12;
					      assparticle[12]=i13;
					      assparticle[13]=i14;
					      assparticle[14]=i15;					      
					      chisquare=dummychisquare;
					      t0best=meantzero;
					    }
					  }
					}
				      }
				    }
				  }					  
				}
			      }
			    }
			  }
			}	
			
		      }
		    }
		  }
		}
	      }	
	      
	      cout << "true" << truparticle[0] << truparticle[1] << truparticle[2] << truparticle[3] << truparticle[4] << truparticle[5] << truparticle[6] << truparticle[7] << truparticle[8] << truparticle[9] <<truparticle[10] << truparticle[11] << truparticle[1
2] << truparticle[13] << truparticle[14] <<endl;
	      cout << "best" << assparticle[0] << assparticle[1] << assparticle[2] << assparticle[3] << assparticle[4] << assparticle[5] << assparticle[6] << assparticle[7] << assparticle[8] << assparticle[9] <<assparticle[10] << assparticle[11] << assparticle[1
2] << assparticle[13] << assparticle[14] << endl;
	      if(truparticle[0]==assparticle[0] && truparticle[1]==assparticle[1] && truparticle[2]==assparticle[2]  && truparticle[3]==assparticle[3] && truparticle[4]==assparticle[4]&& truparticle[5]==assparticle[5] && truparticle[6]==assparticle[6] && trupart
icle[7]==assparticle[7]  && truparticle[8]==assparticle[8] && truparticle[9]==assparticle[9] &&truparticle[10]==assparticle[10] && truparticle[11]==assparticle[11] && truparticle[12]==assparticle[12]  && truparticle[13]==assparticle[13] && truparticle[14]
==assparticle[14]) ngood+=1;
	      if(truparticle[0]!=assparticle[0]) nmisidentified0+=1;
	      if(truparticle[1]!=assparticle[1]) nmisidentified1+=1;
	      if(truparticle[2]!=assparticle[2]) nmisidentified2+=1;
	      if(truparticle[3]!=assparticle[3]) nmisidentified3+=1;
	      if(truparticle[4]!=assparticle[4]) nmisidentified4+=1;
	      if(truparticle[5]!=assparticle[5]) nmisidentified5+=1;
	      if(truparticle[6]!=assparticle[6]) nmisidentified6+=1;
	      if(truparticle[7]!=assparticle[7]) nmisidentified7+=1;
	      if(truparticle[8]!=assparticle[8]) nmisidentified8+=1;
	      if(truparticle[9]!=assparticle[9]) nmisidentified9+=1;
	      if(truparticle[10]!=assparticle[10]) nmisidentified10+=1;
	      if(truparticle[11]!=assparticle[11]) nmisidentified11+=1;
	      if(truparticle[12]!=assparticle[12]) nmisidentified12+=1;
	      if(truparticle[13]!=assparticle[13]) nmisidentified13+=1;
	      if(truparticle[14]!=assparticle[14]) nmisidentified14+=1;
	      cout << "chisquare for current set" << chisquare << endl;
	      htzerobest->Fill(t0best);
	      hchibest->Fill(chisquare);
	      Double_t dblechisquare=(Double_t)chisquare;
	      Float_t confLevel=(Float_t)TMath::Prob(dblechisquare,14);
	      cout << "conf level " << confLevel << endl;
	      hchibestconflevel->Fill(confLevel);
	      chisquare=999.;
	      t0best=999.;
	      
	    } // end for the current set. close if(istop==15)
	    
	    
	  } // end condition on ipartold
	  
	  
	}// end loop on hits for the current track
      }// end TOF
      if(istop>=15) break;
    }// end loop on Tracks
    cout << "ngood for current event " << ngood << endl;
    
    
  }//end loop on events
  
  nmisidentified=(nmisidentified0+nmisidentified1+nmisidentified2+nmisidentified3+nmisidentified4+nmisidentified5+nmisidentified6+nmisidentified7+nmisidentified8+nmisidentified9+nmisidentified10+nmisidentified11+nmisidentified12+nmisidentified13+nmisident
ified14);
  cout << "total misidentified " << nmisidentified << endl;
  TFile *houtfile = new TFile(outFileName,"recreate");
  houtfile->cd();
  
  htzerobest->Write();
  hchibest->Write();
  hchibestconflevel->Write();
  houtfile->Close();  

  gBenchmark->Stop("TOFT0");
  cout << "15 tracks:" << endl ;
  cout << "   took " << gBenchmark->GetCpuTime("TOFT0") << " seconds in order to calculate T0 " 
       <<  gBenchmark->GetCpuTime("TOFT0")/nallevents << " seconds per event " << endl ;
  cout << endl ;

}


 tzero15tracks.C:1
 tzero15tracks.C:2
 tzero15tracks.C:3
 tzero15tracks.C:4
 tzero15tracks.C:5
 tzero15tracks.C:6
 tzero15tracks.C:7
 tzero15tracks.C:8
 tzero15tracks.C:9
 tzero15tracks.C:10
 tzero15tracks.C:11
 tzero15tracks.C:12
 tzero15tracks.C:13
 tzero15tracks.C:14
 tzero15tracks.C:15
 tzero15tracks.C:16
 tzero15tracks.C:17
 tzero15tracks.C:18
 tzero15tracks.C:19
 tzero15tracks.C:20
 tzero15tracks.C:21
 tzero15tracks.C:22
 tzero15tracks.C:23
 tzero15tracks.C:24
 tzero15tracks.C:25
 tzero15tracks.C:26
 tzero15tracks.C:27
 tzero15tracks.C:28
 tzero15tracks.C:29
 tzero15tracks.C:30
 tzero15tracks.C:31
 tzero15tracks.C:32
 tzero15tracks.C:33
 tzero15tracks.C:34
 tzero15tracks.C:35
 tzero15tracks.C:36
 tzero15tracks.C:37
 tzero15tracks.C:38
 tzero15tracks.C:39
 tzero15tracks.C:40
 tzero15tracks.C:41
 tzero15tracks.C:42
 tzero15tracks.C:43
 tzero15tracks.C:44
 tzero15tracks.C:45
 tzero15tracks.C:46
 tzero15tracks.C:47
 tzero15tracks.C:48
 tzero15tracks.C:49
 tzero15tracks.C:50
 tzero15tracks.C:51
 tzero15tracks.C:52
 tzero15tracks.C:53
 tzero15tracks.C:54
 tzero15tracks.C:55
 tzero15tracks.C:56
 tzero15tracks.C:57
 tzero15tracks.C:58
 tzero15tracks.C:59
 tzero15tracks.C:60
 tzero15tracks.C:61
 tzero15tracks.C:62
 tzero15tracks.C:63
 tzero15tracks.C:64
 tzero15tracks.C:65
 tzero15tracks.C:66
 tzero15tracks.C:67
 tzero15tracks.C:68
 tzero15tracks.C:69
 tzero15tracks.C:70
 tzero15tracks.C:71
 tzero15tracks.C:72
 tzero15tracks.C:73
 tzero15tracks.C:74
 tzero15tracks.C:75
 tzero15tracks.C:76
 tzero15tracks.C:77
 tzero15tracks.C:78
 tzero15tracks.C:79
 tzero15tracks.C:80
 tzero15tracks.C:81
 tzero15tracks.C:82
 tzero15tracks.C:83
 tzero15tracks.C:84
 tzero15tracks.C:85
 tzero15tracks.C:86
 tzero15tracks.C:87
 tzero15tracks.C:88
 tzero15tracks.C:89
 tzero15tracks.C:90
 tzero15tracks.C:91
 tzero15tracks.C:92
 tzero15tracks.C:93
 tzero15tracks.C:94
 tzero15tracks.C:95
 tzero15tracks.C:96
 tzero15tracks.C:97
 tzero15tracks.C:98
 tzero15tracks.C:99
 tzero15tracks.C:100
 tzero15tracks.C:101
 tzero15tracks.C:102
 tzero15tracks.C:103
 tzero15tracks.C:104
 tzero15tracks.C:105
 tzero15tracks.C:106
 tzero15tracks.C:107
 tzero15tracks.C:108
 tzero15tracks.C:109
 tzero15tracks.C:110
 tzero15tracks.C:111
 tzero15tracks.C:112
 tzero15tracks.C:113
 tzero15tracks.C:114
 tzero15tracks.C:115
 tzero15tracks.C:116
 tzero15tracks.C:117
 tzero15tracks.C:118
 tzero15tracks.C:119
 tzero15tracks.C:120
 tzero15tracks.C:121
 tzero15tracks.C:122
 tzero15tracks.C:123
 tzero15tracks.C:124
 tzero15tracks.C:125
 tzero15tracks.C:126
 tzero15tracks.C:127
 tzero15tracks.C:128
 tzero15tracks.C:129
 tzero15tracks.C:130
 tzero15tracks.C:131
 tzero15tracks.C:132
 tzero15tracks.C:133
 tzero15tracks.C:134
 tzero15tracks.C:135
 tzero15tracks.C:136
 tzero15tracks.C:137
 tzero15tracks.C:138
 tzero15tracks.C:139
 tzero15tracks.C:140
 tzero15tracks.C:141
 tzero15tracks.C:142
 tzero15tracks.C:143
 tzero15tracks.C:144
 tzero15tracks.C:145
 tzero15tracks.C:146
 tzero15tracks.C:147
 tzero15tracks.C:148
 tzero15tracks.C:149
 tzero15tracks.C:150
 tzero15tracks.C:151
 tzero15tracks.C:152
 tzero15tracks.C:153
 tzero15tracks.C:154
 tzero15tracks.C:155
 tzero15tracks.C:156
 tzero15tracks.C:157
 tzero15tracks.C:158
 tzero15tracks.C:159
 tzero15tracks.C:160
 tzero15tracks.C:161
 tzero15tracks.C:162
 tzero15tracks.C:163
 tzero15tracks.C:164
 tzero15tracks.C:165
 tzero15tracks.C:166
 tzero15tracks.C:167
 tzero15tracks.C:168
 tzero15tracks.C:169
 tzero15tracks.C:170
 tzero15tracks.C:171
 tzero15tracks.C:172
 tzero15tracks.C:173
 tzero15tracks.C:174
 tzero15tracks.C:175
 tzero15tracks.C:176
 tzero15tracks.C:177
 tzero15tracks.C:178
 tzero15tracks.C:179
 tzero15tracks.C:180
 tzero15tracks.C:181
 tzero15tracks.C:182
 tzero15tracks.C:183
 tzero15tracks.C:184
 tzero15tracks.C:185
 tzero15tracks.C:186
 tzero15tracks.C:187
 tzero15tracks.C:188
 tzero15tracks.C:189
 tzero15tracks.C:190
 tzero15tracks.C:191
 tzero15tracks.C:192
 tzero15tracks.C:193
 tzero15tracks.C:194
 tzero15tracks.C:195
 tzero15tracks.C:196
 tzero15tracks.C:197
 tzero15tracks.C:198
 tzero15tracks.C:199
 tzero15tracks.C:200
 tzero15tracks.C:201
 tzero15tracks.C:202
 tzero15tracks.C:203
 tzero15tracks.C:204
 tzero15tracks.C:205
 tzero15tracks.C:206
 tzero15tracks.C:207
 tzero15tracks.C:208
 tzero15tracks.C:209
 tzero15tracks.C:210
 tzero15tracks.C:211
 tzero15tracks.C:212
 tzero15tracks.C:213
 tzero15tracks.C:214
 tzero15tracks.C:215
 tzero15tracks.C:216
 tzero15tracks.C:217
 tzero15tracks.C:218
 tzero15tracks.C:219
 tzero15tracks.C:220
 tzero15tracks.C:221
 tzero15tracks.C:222
 tzero15tracks.C:223
 tzero15tracks.C:224
 tzero15tracks.C:225
 tzero15tracks.C:226
 tzero15tracks.C:227
 tzero15tracks.C:228
 tzero15tracks.C:229
 tzero15tracks.C:230
 tzero15tracks.C:231
 tzero15tracks.C:232
 tzero15tracks.C:233
 tzero15tracks.C:234
 tzero15tracks.C:235
 tzero15tracks.C:236
 tzero15tracks.C:237
 tzero15tracks.C:238
 tzero15tracks.C:239
 tzero15tracks.C:240
 tzero15tracks.C:241
 tzero15tracks.C:242
 tzero15tracks.C:243
 tzero15tracks.C:244
 tzero15tracks.C:245
 tzero15tracks.C:246
 tzero15tracks.C:247
 tzero15tracks.C:248
 tzero15tracks.C:249
 tzero15tracks.C:250
 tzero15tracks.C:251
 tzero15tracks.C:252
 tzero15tracks.C:253
 tzero15tracks.C:254
 tzero15tracks.C:255
 tzero15tracks.C:256
 tzero15tracks.C:257
 tzero15tracks.C:258
 tzero15tracks.C:259
 tzero15tracks.C:260
 tzero15tracks.C:261
 tzero15tracks.C:262
 tzero15tracks.C:263
 tzero15tracks.C:264
 tzero15tracks.C:265
 tzero15tracks.C:266
 tzero15tracks.C:267
 tzero15tracks.C:268
 tzero15tracks.C:269
 tzero15tracks.C:270
 tzero15tracks.C:271
 tzero15tracks.C:272
 tzero15tracks.C:273
 tzero15tracks.C:274
 tzero15tracks.C:275
 tzero15tracks.C:276
 tzero15tracks.C:277
 tzero15tracks.C:278
 tzero15tracks.C:279
 tzero15tracks.C:280
 tzero15tracks.C:281
 tzero15tracks.C:282
 tzero15tracks.C:283
 tzero15tracks.C:284
 tzero15tracks.C:285
 tzero15tracks.C:286
 tzero15tracks.C:287
 tzero15tracks.C:288
 tzero15tracks.C:289
 tzero15tracks.C:290
 tzero15tracks.C:291
 tzero15tracks.C:292
 tzero15tracks.C:293
 tzero15tracks.C:294
 tzero15tracks.C:295
 tzero15tracks.C:296
 tzero15tracks.C:297
 tzero15tracks.C:298
 tzero15tracks.C:299
 tzero15tracks.C:300
 tzero15tracks.C:301
 tzero15tracks.C:302
 tzero15tracks.C:303
 tzero15tracks.C:304
 tzero15tracks.C:305
 tzero15tracks.C:306
 tzero15tracks.C:307
 tzero15tracks.C:308
 tzero15tracks.C:309
 tzero15tracks.C:310
 tzero15tracks.C:311
 tzero15tracks.C:312
 tzero15tracks.C:313
 tzero15tracks.C:314
 tzero15tracks.C:315
 tzero15tracks.C:316
 tzero15tracks.C:317
 tzero15tracks.C:318
 tzero15tracks.C:319
 tzero15tracks.C:320
 tzero15tracks.C:321
 tzero15tracks.C:322
 tzero15tracks.C:323
 tzero15tracks.C:324
 tzero15tracks.C:325
 tzero15tracks.C:326
 tzero15tracks.C:327
 tzero15tracks.C:328
 tzero15tracks.C:329
 tzero15tracks.C:330
 tzero15tracks.C:331
 tzero15tracks.C:332
 tzero15tracks.C:333