ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TCanvas.h>
#include <TLegend.h>
#include <TLegendEntry.h>
#include <TFile.h>
#include <TLine.h>
#include <TNtuple.h>
#include <TStyle.h>
#include <TString.h>
#include <TSystem.h>
#include <TH1F.h>
#include <TGraphErrors.h>
#include <TF1.h>
#include <TH2F.h>
#include <fstream.h>
#include <TMath.h>
#include <TProfile.h>

#endif

/* Macro to produce LHC file for the luminous region.
   Author: caffarri@pd.infn.it
*/ 


void VtxInfoLHC(TString vtxtype="TRKnc",
		TString fname="Vertex.Performance.root",
		TString ntname="fNtupleBeamSpot"){
  
  // const Int_t nbinsmult=11;
  // Float_t limmult[nbinsmult+1]={0.,1.5, 2.5, 5.5,10.5,14.5,24.5,30.5,44.5,60.5,74.5, 99999.}; 
  
  Float_t totev=0,totevtriggered=0;

  Float_t resolVtx=510.;
  Float_t errResolVtx = 10; 
  Float_t p2= 1.3;
  Float_t errp2 = 0.1;
  Float_t meanMult=38;
  Float_t errTotResol =(errResolVtx*errResolVtx)+(0.3*(errp2*errp2)/TMath::Power(meanMult,p2+1)); 

  Float_t timeBinning = 120.; 
  

  Char_t hisnam[20];
  Double_t xRange = 1.;
  Int_t xBins = 125.;
  Double_t zRange = 40.;
  Int_t zBins = 40.;

  /*
    Int_t binsHRes=250*0.5;
    Float_t rangeHRes=10000.*0.5;
    Float_t rangeGrRms = 5000; // micron
    Float_t rangeGrPull = 15; 
    Float_t rangeHPull=10.; 
    Float_t rangeHResS = 1.;
    Float_t rangeHResS = 10000*0.5.;
  */
  
  TFile *f=new TFile(fname.Data());
  TList *cOutput = (TList*)f->Get("cOutputVtxESD");
  TNtuple *nt=(TNtuple*)cOutput->FindObject(ntname.Data());
  // TNtuple *nt=(TNtuple*)f->FindObject(ntname.Data());
  Int_t nnnev=nt->GetEntries();
  printf("Events = %d\n",nnnev);
  
  Float_t xVtx,xVtxSc,xerrVtx;
  Float_t yVtx,yVtxSc,yerrVtx;
  Float_t zVtx,zVtxSc,zerrVtx;
  Float_t ntrklets,ncontrVtx,triggered;
  Float_t run, tstamp;
  
  TString sxx="x"; sxx.Append(vtxtype.Data());
  nt->SetBranchAddress(sxx.Data(),&xVtx);
  TString syy="y"; syy.Append(vtxtype.Data());
  nt->SetBranchAddress(syy.Data(),&yVtx);
  TString szz="z"; szz.Append(vtxtype.Data());
  nt->SetBranchAddress(szz.Data(),&zVtx);
  
  TString xerr="xerr"; xerr.Append(vtxtype.Data());
  nt->SetBranchAddress(xerr.Data(),&xerrVtx);
  TString yerr="yerr"; yerr.Append(vtxtype.Data());
  nt->SetBranchAddress(yerr.Data(),&yerrVtx);
  TString zerr="zerr"; zerr.Append(vtxtype.Data());
  nt->SetBranchAddress(zerr.Data(),&zerrVtx);
  
  
  TCanvas *stampCanvas = new TCanvas ("stampCanvas", "stampCanvas");
  stampCanvas->Divide(3);
  TCanvas *stampCanvasSig = new TCanvas ("stampCanvasSig", "stampCanvasSig");
  stampCanvasSig->Divide(3);
  TCanvas *diamCanvas = new TCanvas ("diamCanvas", "diamCanvas");
  diamCanvas->Divide(2);

  TString trkstitle;
  nt->SetBranchAddress("ntrklets",&ntrklets);
  trkstitle="Tracklets Multiplicity";
  
  TString ntrks="ntrks"; ntrks.Append(vtxtype.Data());
  nt->SetBranchAddress(ntrks.Data(),&ncontrVtx);
  // nt->SetBranchAddress(ntrks.Data(),&ntrklets);
  nt->SetBranchAddress("triggered",&triggered);
  nt->SetBranchAddress("run", &run);
  nt->SetBranchAddress("tstamp",&tstamp);
 
  Float_t minTstamp=10E+13;
  Float_t maxTstamp=-1;
  Int_t subevents;
  
  Float_t minRun = 10E+7;
  Float_t maxRun = 1;
  
  for (Int_t ientries=0; ientries<nt->GetEntriesFast(); ientries++){
    nt->GetEntry(ientries);
    
    if (tstamp<minTstamp) minTstamp=tstamp;
    if (tstamp>maxTstamp) maxTstamp=tstamp;
    
    if (run<minRun) minRun=run-10;
    if (run>maxRun) maxRun=run+10;    
  }

  Int_t nTimeBins = (Int_t)(maxTstamp-minTstamp) / timeBinning;
  
  printf ("number of time bins %d\n", nTimeBins);
  subevents=0;
  
  TH1F **hxVtx = new TH1F*[nTimeBins+1]; //"hxVtx", "hxVtx", 125,-1,1);
  TH1F **hyVtx = new TH1F*[nTimeBins+1]; //("hyVtx", "hyVtx", 125,-1,1);
  TH1F **hzVtx = new TH1F*[nTimeBins+1]; //("hzVtx", "hzVtx", 40,-40,40);
  
  TH1F **hxVtxMult = new TH1F*[nTimeBins+1]; //
  TH1F **hyVtxMult = new TH1F*[nTimeBins+1]; //

  for(Int_t kTimeBin=0;kTimeBin<nTimeBins+1;kTimeBin++){
    printf ("here we are, kTimeBin = %d\n", kTimeBin);
    
    sprintf(hisnam,"hxVtx%d",kTimeBin);
    hxVtx[kTimeBin]=new TH1F(hisnam,"",xBins,-xRange,xRange);
    sprintf(hisnam,"hyVtx%d",kTimeBin);
    hyVtx[kTimeBin]=new TH1F(hisnam,"",xBins,-xRange,xRange);
    sprintf(hisnam,"hzVtx%d",kTimeBin);
    hzVtx[kTimeBin]=new TH1F(hisnam,"",zBins,-zRange,zRange);
    sprintf(hisnam,"hxVtxMult%d",kTimeBin);
    hxVtxMult[kTimeBin]=new TH1F(hisnam,"",xBins,-xRange,xRange);
    sprintf(hisnam,"hyVtxMult%d",kTimeBin);
    hyVtxMult[kTimeBin]=new TH1F(hisnam,"",xBins,-xRange,xRange);

  }

  TH1F *htstampX = new TH1F("tstamp Vx","tstamp Vx", nTimeBins+1, minTstamp, maxTstamp);
  TH1F *htstampY = new TH1F("tstamp Vy","tstamp Vy", nTimeBins+1, minTstamp, maxTstamp);
  TH1F *htstampZ = new TH1F("tstamp Vz","tstamp Vz", nTimeBins+1, minTstamp, maxTstamp); 
  
  TH1F *htstampSigX = new TH1F("tstamp Sig x","tstamp Sig x", nTimeBins+1, minTstamp, maxTstamp);
  TH1F *htstampSigY = new TH1F("tstamp Sig y","tstamp Sig y", nTimeBins+1, minTstamp, maxTstamp);
  TH1F *htstampSigZ = new TH1F("tstamp Sig z","tstamp Sig z", nTimeBins+1, minTstamp, maxTstamp); 
  
  TH1F *htstampXdiam = new TH1F("tstamp Diam X","tstamp Diam X", nTimeBins+1, minTstamp, maxTstamp);
  TH1F *htstampYdiam = new TH1F("tstamp Diam Y","tstamp Diam Y", nTimeBins+1, minTstamp, maxTstamp);
  
  TCanvas *cVtx = new TCanvas("cVtx", "Vtx Canvas", 1000,700);
  cVtx->Divide(3);
  
  Int_t *fill = new Int_t [nTimeBins+1];
  
  for(Int_t iev=0;iev<nnnev;iev++){
    nt->GetEvent(iev);
    
    Int_t rightTimeBin =(Int_t)(tstamp-minTstamp)/ 120;
    printf ("right Time Bin %d \n", rightTimeBin);
    
    if ((run>=114783) && (run<=114798)) fill[rightTimeBin]=1005;
    if ((run>=114916) && (run<=114931)) fill[rightTimeBin]=1013;
    if ((run>=115186) && (run<=115193)) fill[rightTimeBin]=1019;
    if ((run>=115310) && (run<=115345)) fill[rightTimeBin]=1022;
    if ((run>=115393) && (run<=115414)) fill[rightTimeBin]=1023;
    if ((run>=115514) && (run<=115521)) fill[rightTimeBin]=1026;
    if ((run>=115880) && (run<=115892)) fill[rightTimeBin]=1031;
    if ((run>=116079) && (run<=116081)) fill[rightTimeBin]=1033;
    if ((run>=116102) && (run<=116134)) fill[rightTimeBin]=1034;
    if ((run>=116197) && (run<=116204)) fill[rightTimeBin]=1035;
    if ((run>=116287) && (run<=116288)) fill[rightTimeBin]=1038;
    if ((run>=116351) && (run<=116354)) fill[rightTimeBin]=1042;
    if ((run>=116401) && (run<=116403)) fill[rightTimeBin]=1044;
    if ((run>=116559) && (run<=116574)) fill[rightTimeBin]=1045;
    if ((run>=116609) && (run<=116611)) fill[rightTimeBin]=1046; 
    if ((run>=116640) && (run<=116645)) fill[rightTimeBin]=1047;
    if ((run>=116681) && (run<=116684)) fill[rightTimeBin]=1049;


    //      if((tstamp<stopTime)&&(tstamp>=iTstamp)){
    subevents++;
    // ncontrVtx = ntrklets;
    
    //printf ("ntrksTRKnc = %d ncontr = %d \n ", ntrklets, ncontrVtx);
    
    xVtxSc = 10000.*xVtx;
    yVtxSc = 10000.*yVtx;
    zVtxSc = 10000.*zVtx;
    
    if (ncontrVtx>0){
      hxVtx[rightTimeBin]->Fill(xVtx);
      hyVtx[rightTimeBin]->Fill(yVtx);
      hzVtx[rightTimeBin]->Fill(zVtx);
   
      if((ntrklets>30)&&(ntrklets<45)){
	hxVtxMult[rightTimeBin]->Fill(xVtx);
	hyVtxMult[rightTimeBin]->Fill(yVtx);
      }
    }

  }

  Double_t xMeanVtx, xMeanVtxErr, xSigmaVtx, xSigmaVtxErr;
  Double_t yMeanVtx, yMeanVtxErr, ySigmaVtx, ySigmaVtxErr;
  Double_t zMeanVtx, zMeanVtxErr, zSigmaVtx, zSigmaVtxErr;
  Double_t xVtxRms, yVtxRms, zVtxRms;
  Double_t xVtxMult, yVtxMult;  
  Double_t xDiam,  xDiamErr, yDiam,  yDiamErr, zDiam, zDiamErr;
  
  /*
    TString outFileName ="aliceDataVertex"; 
    TString outFileExt = ".txt";
    TString outFileFill ;
  */
  
  ofstream outFile("1045_lumireg_ALICE.txt");
  
  for (Int_t iTimeBin=0; iTimeBin<nTimeBins+1; iTimeBin++){

    if (fill[iTimeBin] != 1045) continue;
    
    Int_t corrTstamp = iTimeBin*120+minTstamp;

    if (iTimeBin == nTimeBins+1) {
      cVtx->cd(1);
      hxVtxMult[iTimeBin]->Draw();
      cVtx->cd(2);
      hyVtxMult[iTimeBin]->Draw();
    
    }

    TF1 *fitVtx, *fitVtxMult;
    if((hxVtx[iTimeBin]->GetEffectiveEntries()<500)){// && (hxVtx[iTimeBin]->GetEffectiveEntries()<500)){
      //outFile << "0." <<" " << "0."<<" ";
      xMeanVtx =0.;
      xMeanVtxErr = 0.;
      xSigmaVtx = 0.;
      xSigmaVtxErr = 0.;
      xDiam = 0.;
      xDiamErr =0.;
      xVtxRms =0.;
    }
    else{
      hxVtx[iTimeBin]->Fit("gaus", "M");
      fitVtx = hxVtx[iTimeBin]->GetFunction("gaus");
      xMeanVtx = fitVtx->GetParameter(1);
      xMeanVtxErr = fitVtx->GetParError(1);
      xSigmaVtx = fitVtx->GetParameter(2);
      xSigmaVtxErr = fitVtx->GetParError(2);
      xVtxRms = hxVtx[iTimeBin]->GetRMS();

      hxVtxMult[iTimeBin]->Fit("gaus", "M");
      fitVtxMult= hxVtxMult[iTimeBin]->GetFunction("gaus");
      xVtxMult = fitVtxMult->GetParameter(2)*10000;
      xDiam=TMath::Sqrt(xVtxMult*xVtxMult - ((resolVtx*resolVtx)/TMath::Power(meanMult, p2)));
      if(xDiam >= 500 ) xDiam=0.;
      xDiamErr = TMath::Sqrt(fitVtxMult->GetParError(2)*10000+ errTotResol);
      printf ("xDiam = %f errDiam = %f \n", xDiam, xDiamErr);
      
      }

    
    if((hyVtx[iTimeBin] ->GetEffectiveEntries()<500)){// && (hyVtxMult[iTimeBin]->GetEffectiveEntries()<500)){
      //outFile << "0." <<" " << "0."<<" ";
      yMeanVtx=0.;
      yMeanVtxErr = 0.;
      ySigmaVtx = 0.;
      ySigmaVtxErr = 0.;
      yDiam = 0;
      yDiamErr =0;
      yVtxRms=0.;
    }
    else{
      hyVtx[iTimeBin]->Fit("gaus", "M");
      fitVtx = hyVtx[iTimeBin]->GetFunction("gaus");
      yMeanVtx = fitVtx->GetParameter(1);
      yMeanVtxErr = fitVtx->GetParError(1);
      ySigmaVtx = fitVtx->GetParameter(2);
      ySigmaVtxErr = fitVtx->GetParError(2);
      yVtxRms = hyVtx[iTimeBin]->GetRMS();
      
      hyVtxMult[iTimeBin]->Fit("gaus", "M");
      fitVtxMult= hyVtxMult[iTimeBin]->GetFunction("gaus");
      yVtxMult = fitVtxMult->GetParameter(2)*10000;
      yDiam=TMath::Sqrt(yVtxMult*yVtxMult - ((resolVtx*resolVtx)/TMath::Power(meanMult, p2)));
      if(yDiam >= 500 ) yDiam=0.;
      yDiamErr = TMath::Sqrt(fitVtxMult->GetParError(2)*10000 + errTotResol);
      printf("yDiam = %f  errDiam= %f \n", yDiam, yDiamErr);
    }
    
    if((hzVtx[iTimeBin]->GetEffectiveEntries()<500)){
      //  outFile << "0." <<" " << "0."<<" ";
      zMeanVtx=0.;
      zMeanVtxErr = 0.;
      zSigmaVtx = 0.;
      zSigmaVtxErr = 0.;
      zDiam = 0.;
      zDiamErr =0.;  
      zVtxRms =0.;
    }
    else{
      hzVtx[iTimeBin]->Fit("gaus", "M");
      fitVtx = hzVtx[iTimeBin]->GetFunction("gaus");
      zMeanVtx = fitVtx->GetParameter(1);
      zMeanVtxErr = fitVtx->GetParError(1);
      zSigmaVtx = fitVtx->GetParameter(2);
      zSigmaVtxErr = fitVtx->GetParError(2);
      zVtxRms = hzVtx[iTimeBin]->GetRMS();

      zDiam = zSigmaVtx;
      zDiamErr = zSigmaVtxErr;
      
     
    }
      
    //outfile<<

    Int_t iBin = htstampX->FindBin(corrTstamp);
    htstampX->SetBinContent(iBin, xMeanVtx);
    htstampX->SetBinError(iBin, xMeanVtxErr); 

    iBin = htstampY->FindBin(corrTstamp);
    htstampY->SetBinContent(iBin, yMeanVtx);
    htstampY->SetBinError(iBin, yMeanVtxErr); 

    iBin = htstampZ->FindBin(corrTstamp);
    htstampZ->SetBinContent(iBin, zMeanVtx);
    htstampZ->SetBinError(iBin, zMeanVtxErr);

    iBin = htstampSigX->FindBin(corrTstamp);
    htstampSigX->SetBinContent(iBin, xSigmaVtx);
    htstampSigX->SetBinError(iBin, xSigmaVtxErr);

    iBin = htstampSigY->FindBin(corrTstamp);
    htstampSigY->SetBinContent(iBin, ySigmaVtx);
    htstampSigY->SetBinError(iBin, ySigmaVtxErr);

    iBin = htstampSigZ->FindBin(corrTstamp);
    htstampSigZ->SetBinContent(iBin, zSigmaVtx);
    htstampSigZ->SetBinError(iBin, zSigmaVtxErr);

    iBin = htstampXdiam->FindBin(corrTstamp);
    htstampXdiam->SetBinContent(iBin, xDiam);
    htstampXdiam->SetBinError(iBin, xDiamErr);

    iBin = htstampYdiam->FindBin(corrTstamp);
    htstampYdiam->SetBinContent(iBin,yDiam);
    htstampYdiam->SetBinError(iBin, yDiamErr);
  
    outFile <<"2"<<" "<<fill[iTimeBin]<<" "<<corrTstamp<<" ";
    outFile <<xMeanVtx*10<<" "<<xMeanVtxErr*10<<" ";
    outFile <<yMeanVtx*10<<" "<<yMeanVtxErr*10<<" ";
    outFile <<zMeanVtx*10<<" "<<zMeanVtxErr*10<<" ";
    outFile <<xSigmaVtx*10<<" "<<xSigmaVtxErr*10<<" ";
    outFile <<ySigmaVtx*10<<" "<<ySigmaVtxErr*10<<" ";
    outFile <<zSigmaVtx*10<<" "<<zSigmaVtxErr*10<<" ";
    outFile <<xDiam*0.001<<" "<<xDiamErr*0.001<<" ";
    outFile <<yDiam*0.001<<" "<<yDiamErr*0.001<<" ";
    outFile <<zDiam*10<<" "<<zDiamErr*10<<" ";
    outFile <<xVtxRms*10 <<" "<<yVtxRms*10<<" "<<zVtxRms*10<<endl;
    



  }
  printf ("Err Resol = %f \n", errTotResol);
  stampCanvas->cd(1);
  htstampX->Draw();
  stampCanvas->cd(2);
  htstampY->Draw();
  stampCanvas->cd(3);
  htstampZ->Draw();
  
  stampCanvasSig->cd(1);
  htstampSigX->Draw();
  stampCanvasSig->cd(2);
  htstampSigY->Draw();
  stampCanvasSig->cd(3);
  htstampSigZ->Draw(); 
  
  diamCanvas->cd(1);
  htstampXdiam->Draw();
  diamCanvas->cd(2);
  htstampYdiam->Draw();
}
 VtxInfoLHC.C:1
 VtxInfoLHC.C:2
 VtxInfoLHC.C:3
 VtxInfoLHC.C:4
 VtxInfoLHC.C:5
 VtxInfoLHC.C:6
 VtxInfoLHC.C:7
 VtxInfoLHC.C:8
 VtxInfoLHC.C:9
 VtxInfoLHC.C:10
 VtxInfoLHC.C:11
 VtxInfoLHC.C:12
 VtxInfoLHC.C:13
 VtxInfoLHC.C:14
 VtxInfoLHC.C:15
 VtxInfoLHC.C:16
 VtxInfoLHC.C:17
 VtxInfoLHC.C:18
 VtxInfoLHC.C:19
 VtxInfoLHC.C:20
 VtxInfoLHC.C:21
 VtxInfoLHC.C:22
 VtxInfoLHC.C:23
 VtxInfoLHC.C:24
 VtxInfoLHC.C:25
 VtxInfoLHC.C:26
 VtxInfoLHC.C:27
 VtxInfoLHC.C:28
 VtxInfoLHC.C:29
 VtxInfoLHC.C:30
 VtxInfoLHC.C:31
 VtxInfoLHC.C:32
 VtxInfoLHC.C:33
 VtxInfoLHC.C:34
 VtxInfoLHC.C:35
 VtxInfoLHC.C:36
 VtxInfoLHC.C:37
 VtxInfoLHC.C:38
 VtxInfoLHC.C:39
 VtxInfoLHC.C:40
 VtxInfoLHC.C:41
 VtxInfoLHC.C:42
 VtxInfoLHC.C:43
 VtxInfoLHC.C:44
 VtxInfoLHC.C:45
 VtxInfoLHC.C:46
 VtxInfoLHC.C:47
 VtxInfoLHC.C:48
 VtxInfoLHC.C:49
 VtxInfoLHC.C:50
 VtxInfoLHC.C:51
 VtxInfoLHC.C:52
 VtxInfoLHC.C:53
 VtxInfoLHC.C:54
 VtxInfoLHC.C:55
 VtxInfoLHC.C:56
 VtxInfoLHC.C:57
 VtxInfoLHC.C:58
 VtxInfoLHC.C:59
 VtxInfoLHC.C:60
 VtxInfoLHC.C:61
 VtxInfoLHC.C:62
 VtxInfoLHC.C:63
 VtxInfoLHC.C:64
 VtxInfoLHC.C:65
 VtxInfoLHC.C:66
 VtxInfoLHC.C:67
 VtxInfoLHC.C:68
 VtxInfoLHC.C:69
 VtxInfoLHC.C:70
 VtxInfoLHC.C:71
 VtxInfoLHC.C:72
 VtxInfoLHC.C:73
 VtxInfoLHC.C:74
 VtxInfoLHC.C:75
 VtxInfoLHC.C:76
 VtxInfoLHC.C:77
 VtxInfoLHC.C:78
 VtxInfoLHC.C:79
 VtxInfoLHC.C:80
 VtxInfoLHC.C:81
 VtxInfoLHC.C:82
 VtxInfoLHC.C:83
 VtxInfoLHC.C:84
 VtxInfoLHC.C:85
 VtxInfoLHC.C:86
 VtxInfoLHC.C:87
 VtxInfoLHC.C:88
 VtxInfoLHC.C:89
 VtxInfoLHC.C:90
 VtxInfoLHC.C:91
 VtxInfoLHC.C:92
 VtxInfoLHC.C:93
 VtxInfoLHC.C:94
 VtxInfoLHC.C:95
 VtxInfoLHC.C:96
 VtxInfoLHC.C:97
 VtxInfoLHC.C:98
 VtxInfoLHC.C:99
 VtxInfoLHC.C:100
 VtxInfoLHC.C:101
 VtxInfoLHC.C:102
 VtxInfoLHC.C:103
 VtxInfoLHC.C:104
 VtxInfoLHC.C:105
 VtxInfoLHC.C:106
 VtxInfoLHC.C:107
 VtxInfoLHC.C:108
 VtxInfoLHC.C:109
 VtxInfoLHC.C:110
 VtxInfoLHC.C:111
 VtxInfoLHC.C:112
 VtxInfoLHC.C:113
 VtxInfoLHC.C:114
 VtxInfoLHC.C:115
 VtxInfoLHC.C:116
 VtxInfoLHC.C:117
 VtxInfoLHC.C:118
 VtxInfoLHC.C:119
 VtxInfoLHC.C:120
 VtxInfoLHC.C:121
 VtxInfoLHC.C:122
 VtxInfoLHC.C:123
 VtxInfoLHC.C:124
 VtxInfoLHC.C:125
 VtxInfoLHC.C:126
 VtxInfoLHC.C:127
 VtxInfoLHC.C:128
 VtxInfoLHC.C:129
 VtxInfoLHC.C:130
 VtxInfoLHC.C:131
 VtxInfoLHC.C:132
 VtxInfoLHC.C:133
 VtxInfoLHC.C:134
 VtxInfoLHC.C:135
 VtxInfoLHC.C:136
 VtxInfoLHC.C:137
 VtxInfoLHC.C:138
 VtxInfoLHC.C:139
 VtxInfoLHC.C:140
 VtxInfoLHC.C:141
 VtxInfoLHC.C:142
 VtxInfoLHC.C:143
 VtxInfoLHC.C:144
 VtxInfoLHC.C:145
 VtxInfoLHC.C:146
 VtxInfoLHC.C:147
 VtxInfoLHC.C:148
 VtxInfoLHC.C:149
 VtxInfoLHC.C:150
 VtxInfoLHC.C:151
 VtxInfoLHC.C:152
 VtxInfoLHC.C:153
 VtxInfoLHC.C:154
 VtxInfoLHC.C:155
 VtxInfoLHC.C:156
 VtxInfoLHC.C:157
 VtxInfoLHC.C:158
 VtxInfoLHC.C:159
 VtxInfoLHC.C:160
 VtxInfoLHC.C:161
 VtxInfoLHC.C:162
 VtxInfoLHC.C:163
 VtxInfoLHC.C:164
 VtxInfoLHC.C:165
 VtxInfoLHC.C:166
 VtxInfoLHC.C:167
 VtxInfoLHC.C:168
 VtxInfoLHC.C:169
 VtxInfoLHC.C:170
 VtxInfoLHC.C:171
 VtxInfoLHC.C:172
 VtxInfoLHC.C:173
 VtxInfoLHC.C:174
 VtxInfoLHC.C:175
 VtxInfoLHC.C:176
 VtxInfoLHC.C:177
 VtxInfoLHC.C:178
 VtxInfoLHC.C:179
 VtxInfoLHC.C:180
 VtxInfoLHC.C:181
 VtxInfoLHC.C:182
 VtxInfoLHC.C:183
 VtxInfoLHC.C:184
 VtxInfoLHC.C:185
 VtxInfoLHC.C:186
 VtxInfoLHC.C:187
 VtxInfoLHC.C:188
 VtxInfoLHC.C:189
 VtxInfoLHC.C:190
 VtxInfoLHC.C:191
 VtxInfoLHC.C:192
 VtxInfoLHC.C:193
 VtxInfoLHC.C:194
 VtxInfoLHC.C:195
 VtxInfoLHC.C:196
 VtxInfoLHC.C:197
 VtxInfoLHC.C:198
 VtxInfoLHC.C:199
 VtxInfoLHC.C:200
 VtxInfoLHC.C:201
 VtxInfoLHC.C:202
 VtxInfoLHC.C:203
 VtxInfoLHC.C:204
 VtxInfoLHC.C:205
 VtxInfoLHC.C:206
 VtxInfoLHC.C:207
 VtxInfoLHC.C:208
 VtxInfoLHC.C:209
 VtxInfoLHC.C:210
 VtxInfoLHC.C:211
 VtxInfoLHC.C:212
 VtxInfoLHC.C:213
 VtxInfoLHC.C:214
 VtxInfoLHC.C:215
 VtxInfoLHC.C:216
 VtxInfoLHC.C:217
 VtxInfoLHC.C:218
 VtxInfoLHC.C:219
 VtxInfoLHC.C:220
 VtxInfoLHC.C:221
 VtxInfoLHC.C:222
 VtxInfoLHC.C:223
 VtxInfoLHC.C:224
 VtxInfoLHC.C:225
 VtxInfoLHC.C:226
 VtxInfoLHC.C:227
 VtxInfoLHC.C:228
 VtxInfoLHC.C:229
 VtxInfoLHC.C:230
 VtxInfoLHC.C:231
 VtxInfoLHC.C:232
 VtxInfoLHC.C:233
 VtxInfoLHC.C:234
 VtxInfoLHC.C:235
 VtxInfoLHC.C:236
 VtxInfoLHC.C:237
 VtxInfoLHC.C:238
 VtxInfoLHC.C:239
 VtxInfoLHC.C:240
 VtxInfoLHC.C:241
 VtxInfoLHC.C:242
 VtxInfoLHC.C:243
 VtxInfoLHC.C:244
 VtxInfoLHC.C:245
 VtxInfoLHC.C:246
 VtxInfoLHC.C:247
 VtxInfoLHC.C:248
 VtxInfoLHC.C:249
 VtxInfoLHC.C:250
 VtxInfoLHC.C:251
 VtxInfoLHC.C:252
 VtxInfoLHC.C:253
 VtxInfoLHC.C:254
 VtxInfoLHC.C:255
 VtxInfoLHC.C:256
 VtxInfoLHC.C:257
 VtxInfoLHC.C:258
 VtxInfoLHC.C:259
 VtxInfoLHC.C:260
 VtxInfoLHC.C:261
 VtxInfoLHC.C:262
 VtxInfoLHC.C:263
 VtxInfoLHC.C:264
 VtxInfoLHC.C:265
 VtxInfoLHC.C:266
 VtxInfoLHC.C:267
 VtxInfoLHC.C:268
 VtxInfoLHC.C:269
 VtxInfoLHC.C:270
 VtxInfoLHC.C:271
 VtxInfoLHC.C:272
 VtxInfoLHC.C:273
 VtxInfoLHC.C:274
 VtxInfoLHC.C:275
 VtxInfoLHC.C:276
 VtxInfoLHC.C:277
 VtxInfoLHC.C:278
 VtxInfoLHC.C:279
 VtxInfoLHC.C:280
 VtxInfoLHC.C:281
 VtxInfoLHC.C:282
 VtxInfoLHC.C:283
 VtxInfoLHC.C:284
 VtxInfoLHC.C:285
 VtxInfoLHC.C:286
 VtxInfoLHC.C:287
 VtxInfoLHC.C:288
 VtxInfoLHC.C:289
 VtxInfoLHC.C:290
 VtxInfoLHC.C:291
 VtxInfoLHC.C:292
 VtxInfoLHC.C:293
 VtxInfoLHC.C:294
 VtxInfoLHC.C:295
 VtxInfoLHC.C:296
 VtxInfoLHC.C:297
 VtxInfoLHC.C:298
 VtxInfoLHC.C:299
 VtxInfoLHC.C:300
 VtxInfoLHC.C:301
 VtxInfoLHC.C:302
 VtxInfoLHC.C:303
 VtxInfoLHC.C:304
 VtxInfoLHC.C:305
 VtxInfoLHC.C:306
 VtxInfoLHC.C:307
 VtxInfoLHC.C:308
 VtxInfoLHC.C:309
 VtxInfoLHC.C:310
 VtxInfoLHC.C:311
 VtxInfoLHC.C:312
 VtxInfoLHC.C:313
 VtxInfoLHC.C:314
 VtxInfoLHC.C:315
 VtxInfoLHC.C:316
 VtxInfoLHC.C:317
 VtxInfoLHC.C:318
 VtxInfoLHC.C:319
 VtxInfoLHC.C:320
 VtxInfoLHC.C:321
 VtxInfoLHC.C:322
 VtxInfoLHC.C:323
 VtxInfoLHC.C:324
 VtxInfoLHC.C:325
 VtxInfoLHC.C:326
 VtxInfoLHC.C:327
 VtxInfoLHC.C:328
 VtxInfoLHC.C:329
 VtxInfoLHC.C:330
 VtxInfoLHC.C:331
 VtxInfoLHC.C:332
 VtxInfoLHC.C:333
 VtxInfoLHC.C:334
 VtxInfoLHC.C:335
 VtxInfoLHC.C:336
 VtxInfoLHC.C:337
 VtxInfoLHC.C:338
 VtxInfoLHC.C:339
 VtxInfoLHC.C:340
 VtxInfoLHC.C:341
 VtxInfoLHC.C:342
 VtxInfoLHC.C:343
 VtxInfoLHC.C:344
 VtxInfoLHC.C:345
 VtxInfoLHC.C:346
 VtxInfoLHC.C:347
 VtxInfoLHC.C:348
 VtxInfoLHC.C:349
 VtxInfoLHC.C:350
 VtxInfoLHC.C:351
 VtxInfoLHC.C:352
 VtxInfoLHC.C:353
 VtxInfoLHC.C:354
 VtxInfoLHC.C:355
 VtxInfoLHC.C:356
 VtxInfoLHC.C:357
 VtxInfoLHC.C:358
 VtxInfoLHC.C:359
 VtxInfoLHC.C:360
 VtxInfoLHC.C:361
 VtxInfoLHC.C:362
 VtxInfoLHC.C:363
 VtxInfoLHC.C:364
 VtxInfoLHC.C:365
 VtxInfoLHC.C:366
 VtxInfoLHC.C:367
 VtxInfoLHC.C:368
 VtxInfoLHC.C:369
 VtxInfoLHC.C:370
 VtxInfoLHC.C:371
 VtxInfoLHC.C:372
 VtxInfoLHC.C:373
 VtxInfoLHC.C:374
 VtxInfoLHC.C:375
 VtxInfoLHC.C:376
 VtxInfoLHC.C:377
 VtxInfoLHC.C:378
 VtxInfoLHC.C:379
 VtxInfoLHC.C:380
 VtxInfoLHC.C:381
 VtxInfoLHC.C:382
 VtxInfoLHC.C:383
 VtxInfoLHC.C:384
 VtxInfoLHC.C:385
 VtxInfoLHC.C:386
 VtxInfoLHC.C:387
 VtxInfoLHC.C:388
 VtxInfoLHC.C:389
 VtxInfoLHC.C:390
 VtxInfoLHC.C:391
 VtxInfoLHC.C:392
 VtxInfoLHC.C:393
 VtxInfoLHC.C:394
 VtxInfoLHC.C:395
 VtxInfoLHC.C:396
 VtxInfoLHC.C:397
 VtxInfoLHC.C:398
 VtxInfoLHC.C:399
 VtxInfoLHC.C:400