ROOT logo
//
// Process ESD tracks  - 
// Extract TPC tracks  - write them to tree
//
/*
  .L AnalyzeESDtracks.C+
  .L AliGenInfo.C+
  AnalyzeESDtracks(567);   // process tracks
  // Tracks are written to the file "TPCtracks.root"
  // Now yo can analyze it
  TFile fesd("AliESDs.root");
  TTree * treeE = (TTree*)fesd.Get("esdTree");
  TFile f("TPCtracks.root")
  TTree * tree =(TTree*)f.Get("Tracks");
  AliComparisonDraw comp;
  comp->fTree = tree;

*/

// 

/*
.L AnalyzeESDtracks.C+
.L AliGenInfo.C+

//AnalyzeESDtracks(567);


TFile fesd("AliESDs.root");
TTree * treeE = (TTree*)fesd.Get("esdTree");
TFile f("TPCtracks.root")
TTree * tree =(TTree*)f.Get("Tracks");
AliComparisonDraw comp;
comp->fTree = tree;

TFile fs("TPCsignal.root");
TTree *treeB =(TTree*)fs.Get("SignalB");
TTree *treeN =(TTree*)fs.Get("SignalN");
TTree *treeS =(TTree*)fs.Get("Signal");
TTree *treef =(TTree*)fs.Get("Fit");


FitSignals(treeB,"Max-Median>100&&RMS06<2.5")
TFile ffit("FitSignal.root");
TTree * treeF = (TTree*)ffit->Get("Fit");


TChain chaincl("TreeR","TreeR")
chaincl.Add("TPC.RecPoints.root/Event0/TreeR")
chaincl.Add("TPC.RecPoints1.root/Event1/TreeR")
chaincl.Add("TPC.RecPoints2.root/Event2/TreeR")
chaincl.Add("TPC.RecPoints3.root/Event3/TreeR")

*/



#include "TObject.h"
#include "TFile.h"
#include "TTree.h"
#include "TChain.h"
#include "TBranch.h"
#include "TTreeStream.h"
#include "TEventList.h"
#include "TCut.h"
#include "TFitter.h"
#include  "TMatrixD.h"
#include  "TRobustEstimator.h"
#include  "TTimeStamp.h"

#include  "AliLog.h"
#include  "AliMagF.h"

#include  "AliESD.h"
#include  "AliESDfriend.h"
#include  "AliESDtrack.h"
#include  "AliTracker.h"
#include  "AliTPCseed.h"
#include  "AliTPCclusterMI.h"
#include  "AliTPCParamSR.h"
#include  "AliTPCROC.h"


#include  "TTreeStream.h"
#include  "TF1.h"
#include  "TGraph.h"
#include  "AliSignalProcesor.h"
#include  "TCanvas.h"


void FitSignals(TTree * treeB, TCut cut="Max-Median>150&&RMS06<2&&abs(Median-Mean09)<0.5", Int_t maxS=100);
void LaserCalib(TTreeSRedirector & cstream, TTree * chain, Float_t tmin, Float_t tmax, Float_t fraction=0.7);

void AnalyzeESDtracks(Int_t run){
  //
  // output redirect 
  TTreeSRedirector *  pcstream = new TTreeSRedirector("TPCtracks.root");
  TTreeSRedirector &cstream = *pcstream;
  //
  TFile f("AliESDs.root");
  TTree * tree =(TTree*)f.Get("esdTree"); 
  AliESD * esd =0;
  tree->SetBranchAddress("ESD",&esd);
  AliESDfriend *evf=0;
  tree->AddFriend("esdFriendTree","AliESDfriends.root");
  tree->SetBranchAddress("ESDfriend",&evf);

  Int_t nevents = tree->GetEntries();
  TClonesArray *clusters = new TClonesArray("AliTPCclusterMI",160);
  for (Int_t irow=0; irow<160; irow++){
    new ((*clusters)[irow])  AliTPCclusterMI;   // iitial dummy clusters
  }
  
  for (Int_t ievent=0; ievent<nevents; ievent++){
    tree->GetEntry(ievent);
    if (!esd) continue;
    if (!evf) continue;
    esd->SetESDfriend(evf); //Attach the friend to the ESD      
    for (Int_t itrack =0; itrack<esd->GetNumberOfTracks(); itrack++){
      // Int_t itrack = 0;      
      if (esd->GetTrack(itrack)->GetFriendTrack()==0) continue;
      AliESDtrack * etrack = esd->GetTrack(itrack);
      AliESDfriendTrack * ftrack = (AliESDfriendTrack *)esd->GetTrack(itrack)->GetFriendTrack();
      AliTPCseed * seed =  (AliTPCseed*)(ftrack->GetCalibObject(0));
      if (!seed) continue;  
      for (Int_t irow=0; irow<160; irow++){
	if (seed->GetClusterFast(irow)){
	  AliTPCclusterMI * cl = new ((*clusters)[irow])  AliTPCclusterMI(*(seed->GetClusterFast(irow)));
	  cl->SetLabel(itrack,0);
	}
	else{
	  AliTPCclusterMI * cl = (AliTPCclusterMI*)clusters->At(irow);
	  cl->SetX(0); cl->SetY(0); cl->SetZ(0); cl->SetQ(0); cl->SetLabel(-1,0);
	}
      }
      Float_t dEdx = seed->GetdEdx();
      Float_t dEdxI = seed->CookdEdx(0.05,0.6,0,77);
      Float_t dEdxO = seed->CookdEdx(0.05,0.6,78,155);
      Int_t ncl = seed->GetNumberOfClusters();
      cstream<<"Tracks"<<
	"Run="<<run<<
	"Ncl="<<ncl<<
	"Event="<<ievent<<
	"dEdx="<<dEdx<<
	"dEdxI="<<dEdxI<<
	"dEdxO="<<dEdxO<<
	"Track.="<<seed<<
	"Etrack.="<<etrack<<
	"Cl.="<<clusters<<
	"\n";
    }  
  }
  delete pcstream;
  //
  // Fit signal part
  //
  TFile fs("TPCsignal.root");
  TTree *treeB =(TTree*)fs.Get("SignalB");
  //
  // Fit central electrode part
  //
  TTreeSRedirector * pcestream = new  TTreeSRedirector("TimeRoot.root");
  TTree * treece = (TTree*)fs.Get("Signalce");
  if (tree) {
    LaserCalib(*pcestream, treece, 800,1000, 0.7);
    delete pcestream;
  }
  FitSignals(treeB,"Max-Median>150&&RMS06<1.0&&RMS09<1.5&&abs(Median-Mean09)<0.2&&abs(Mean06-Mean09)<0.2",1000);
  //
}


void FitSignals(TTree * treeB, TCut cut, Int_t max){
  AliSignalProcesor proc;
  TF1 * f1 = proc.GetAsymGauss();
  TTreeSRedirector cstream("FitSignal.root");
  TFile *f = cstream.GetFile();

  char lname[100];
  sprintf(lname,"Fit%s", cut.GetTitle());
  TEventList *list = new TEventList(lname,lname);
  sprintf(lname,">>Fit%s", cut.GetTitle());
  treeB->Draw(lname,cut);
  treeB->SetEventList(list);
  Int_t nFits=0;
  for (Int_t ievent=0; ievent<list->GetN(); ievent++){
    if (nFits>max) break;
    if (nFits%50==0) printf("%d\n",nFits);
    char ename[100];
    sprintf(ename,"Fit%d", ievent);
    Double_t nsample = treeB->Draw("Graph.fY-Mean09:Graph.fX","","",1,ievent);
    Double_t * signal  = treeB->GetV1();
    Double_t * time  = treeB->GetV2();
    Double_t maxpos =0;
    Double_t max = 0;
    for (Int_t ipos = 0; ipos<nsample; ipos++){
      if (signal[ipos]>max){
	max    = signal[ipos];
	maxpos = ipos;
      }
    }

    Int_t first = TMath::Max(maxpos-10,0.);
    Int_t last  = TMath::Min(maxpos+60, nsample);
    //
    f->cd();
    TH1F his(ename,ename,last-first,first,last);
    for (Int_t ipos=0; ipos<last-first; ipos++){
      his.SetBinContent(ipos+1,signal[ipos+first]);
    }
    treeB->Draw("Sector:Row:Pad","","",1,ievent);
    Double_t sector = treeB->GetV1()[0];
    Double_t row    = treeB->GetV2()[0];
    Double_t pad    = treeB->GetV3()[0];
    //    TGraph  graph(last-first,&time[first],&signal[first]);
    f1->SetParameters(0.75*max,maxpos,1.1,0.8,0.25,0.2);
    //    TH1F * his = (TH1F*)graph.GetHistogram();
    his.Fit(f1,"q");
    his.Write(ename);
    gPad->Clear();
    his.Draw();
    gPad->Update();
    Double_t params[6];
    for (Int_t ipar=0; ipar<6; ipar++) params[ipar] = f1->GetParameters()[ipar];
    Double_t chi2 = TFitter::GetFitter()->Chisquare(6,params);
    TMatrixD cov(6,6);
    cov.SetMatrixArray(TFitter::GetFitter()->GetCovarianceMatrix());
    //
    // tail cancellation
    //
    Double_t x0[1000];
    Double_t x1[1000];
    Double_t x2[1000];
    for (Int_t ipos=0; ipos<last-first; ipos++){
      x0[ipos] = signal[ipos+first];
    }
    proc.TailCancelationALTRO1(x0,x1,0.85*0.339,0.09,last-first);
    proc.TailCancelationALTRO1(x1,x2,0.85,0.789,last-first);
    //
    sprintf(ename,"Cancel1_%d", ievent);
    TH1F his1(ename,ename,last-first,first,last);
    for (Int_t ipos=0; ipos<last-first; ipos++){
      his1.SetBinContent(ipos+1,x1[ipos]);
    }
    his1.Write(ename);
    sprintf(ename,"Cancel2_%d", ievent);
    TH1F his2(ename,ename,last-first,first,last);
    for (Int_t ipos=0; ipos<last-first; ipos++){
      his2.SetBinContent(ipos+1,x1[ipos]);
    }
    f1->SetParameters(0.75*max,maxpos,1.1,0.8,0.25,0.2);
    his2.Fit(f1,"q");
    his2.Write(ename);
    Double_t params2[6];
    for (Int_t ipar=0; ipar<6; ipar++) params2[ipar] = f1->GetParameters()[ipar];
    Double_t chi22 = TFitter::GetFitter()->Chisquare(6,params2);    
    TMatrixD cov2(6,6);
    cov2.SetMatrixArray(TFitter::GetFitter()->GetCovarianceMatrix());

    TGraph gr0(last-first, &time[first],x0);
    TGraph gr1(last-first, &time[first],x1);
    TGraph gr2(last-first, &time[first],x2);
    //
    cstream<<"Fit"<<
      "Sector="<<sector<<
      "Row="<<row<<
      "Pad="<<pad<<
      "First="<<first<<
      "Max="<<max<<
      "MaxPos="<<maxpos<<
      "chi2="<<chi2<<
      "chi22="<<chi22<<
      "Cov="<<&cov<<
      "Cov2="<<&cov2<<
      "gr0.="<<&gr0<<
      "gr1.="<<&gr1<<
      "gr2.="<<&gr2<<
      "p0="<<params[0]<<
      "p1="<<params[1]<<
      "p2="<<params[2]<<
      "p3="<<params[3]<<
      "p4="<<params[4]<<
      "p5="<<params[5]<<
      "p02="<<params2[0]<<
      "p12="<<params2[1]<<
      "p22="<<params2[2]<<
      "p32="<<params2[3]<<
      "p42="<<params2[4]<<
      "p52="<<params2[5]<<
      "\n";
    //    delete his;
    nFits++;
  }

}


void LaserCalib(TTreeSRedirector & cstream, TTree * chain, Float_t tmin, Float_t tmax, Float_t fraction){
  //
  //
  //
  const Double_t kMaxDelta=10;
  AliTPCParamSR param;
  param.Update();
  TFile fce("TPCsignal.root");
  TTree   * treece =(TTree*)fce.Get("Signalce");
  if (chain) treece=chain;
  //
  TBranch * brsector  = treece->GetBranch("Sector");
  TBranch * brpad     = treece->GetBranch("Pad");
  TBranch * brrow     = treece->GetBranch("Row");
  TBranch * brTimeStamp = treece->GetBranch("TimeStamp");
  //
  TBranch * brtime    = treece->GetBranch("Time");
  TBranch * brrms     = treece->GetBranch("RMS06");
  TBranch * brmax     = treece->GetBranch("Max");
  TBranch * brsum     = treece->GetBranch("Qsum");

  Int_t sector, pad, row=0;
  Double_t time=0, rms=0, qMax=0, qSum=0;
  UInt_t  timeStamp=0;
  brsector->SetAddress(&sector);
  brrow->SetAddress(&row);
  brpad->SetAddress(&pad);
  brTimeStamp->SetAddress(&timeStamp);
  
  brtime->SetAddress(&time);
  brrms->SetAddress(&rms);
  brmax->SetAddress(&qMax);
  brsum->SetAddress(&qSum);


  brsector->GetEntry(0);
  //
  Int_t firstSector  = sector;
  Int_t lastSector   = sector;
  Int_t fentry = 0;
  Int_t lentry = 0;
  //
  // find time offset for differnt events
  //
  Int_t count = 0;
  Double_t padTimes[500000];
  TRobustEstimator restim;
  Double_t meanS[72], sigmaS[72];
  Int_t   firstS[72], lastS[72];
  Double_t   sectorsID[72];
  for (Int_t isector=0;isector<72; isector++){
    firstS[isector]=-1; 
    lastS[isector] =-1;
  };
  TH1F  hisT("hisT","hisT",100,tmin,tmax);
  treece->Draw("Time>>hisT","");
  Float_t cbin = hisT.GetBinCenter(hisT.GetMaximumBin());

  for (Int_t ientry=0; ientry<treece->GetEntriesFast(); ientry++){
    treece->GetEvent(ientry);
    //
    if (sector!=lastSector && sector==firstSector){
      //if (sector!=lastSector){
      lentry = ientry;
      TTimeStamp stamp(timeStamp);
      stamp.Print();
      printf("\nEvent\t%d\tFirst\t%d\tLast\t%d\t%d\n",count, fentry, lentry, lentry-fentry);
      //
      //
      Int_t ngood=0;      
      for (Int_t ientry2=fentry; ientry2<lentry; ientry2++){
	//	brtime->GetEvent(ientry2);
	//  brsector->GetEvent(ientry2);
	treece->GetEvent(ientry2);
	if (time>tmin&&time<tmax && TMath::Abs(time-cbin)<kMaxDelta){
	  padTimes[ngood]=time;
	  ngood++;	
	  if (firstS[sector]<0)  firstS[sector]= ngood;
	  if (firstS[sector]>=0) lastS[sector] = ngood;
	}	
      }
      //
      //
      Double_t mean,sigma;
      restim.EvaluateUni(ngood,padTimes,mean, sigma,int(float(ngood)*fraction));
      printf("Event\t%d\t%f\t%f\n",count, mean, sigma);
      for (Int_t isector=0; isector<72; isector++){
	sectorsID[isector]=sector;
	if (firstS[isector]>=0 &&lastS[isector]>=0 && lastS[isector]>firstS[isector] ){
	  Int_t ngoodS = lastS[isector]-firstS[isector];
	  restim.EvaluateUni(ngoodS, &padTimes[firstS[isector]],meanS[isector], 
			     sigmaS[isector],int(float(ngoodS)*fraction));
	}
      }
      TGraph  graphM(72,sectorsID,meanS);
      TGraph  graphS(72,sectorsID,sigmaS);
      cstream<<"TimeS"<<
	"CBin="<<cbin<<
	"Event="<<count<<
	"GM="<<&graphM<<
	"GS="<<&graphS<<
	"\n";
      

      for (Int_t ientry2=fentry; ientry2<lentry-1; ientry2++){
	treece->GetEvent(ientry2);
	Double_t x      = param.GetPadRowRadii(sector,row);
	Int_t    maxpad = AliTPCROC::Instance()->GetNPads(sector,row);
	Double_t y = (pad - 2.5 - 0.5*maxpad)*param.GetPadPitchWidth(sector);
	Double_t alpha = TMath::DegToRad()*(10.+20.*(sector%18));	
	Double_t gx = x*TMath::Cos(alpha)-y*TMath::Sin(alpha);
	Double_t gy = y*TMath::Cos(alpha)+x*TMath::Sin(alpha);
	
	Int_t npadS = lastS[sector]-firstS[sector];
	cstream<<"Time"<<
	  "Event="<<count<<
	  "TimeStamp="<<timeStamp<<
	  "CBin="<<cbin<<
	  "x="<<x<<
	  "y="<<y<<
	  "gx="<<gx<<
	  "gy="<<gy<<
	  "Sector="<<sector<<
	  "Row="<<row<<
	  "Pad="<<pad<<
	  "Time="<<time<<
	  "RMS="<<rms<<
	  "Time0="<<mean<<
	  "Sigma0="<<sigma<< 
	  "TimeS0="<<meanS[sector]<<
	  "SigmaS0="<<sigmaS[sector]<<
	  "npad0="<<ngood<<
	  "npadS="<<npadS<<
	  "Max="<<qMax<<
	  "Sum="<<qSum<<
	  "\n";
      }
      treece->GetEvent(ientry);
      fentry = ientry;
      count++;      
      for (Int_t isector=0;isector<72; isector++){
	firstS[isector]=-1; 
	lastS[isector] =-1;
      }
    }
    lastSector=sector;
  }
}




TChain *MakeChainCL(Int_t first, Int_t last){
  TChain *chaincl = new TChain("TreeR","TreeR");
  //
  char fname[100];
  for (Int_t i=first;i<last; i++){
    if (i>0) sprintf(fname,"TPC.RecPoints%d.root/Event%d/TreeR",i,i);
    if (i==0) sprintf(fname,"TPC.RecPoints.root/Event%d/TreeR",i);
    chaincl->Add(fname);
  }
  return chaincl;
}

TTree* GetTree(Int_t ievent){
  char fname[100];
  char tname[100];
  if (ievent>0) sprintf(fname,"TPC.RecPoints%d.root",ievent);
  if (ievent==0) sprintf(fname,"TPC.RecPoints.root");
  sprintf(tname,"Event%d/TreeR",ievent);
  TFile * f  = new TFile(fname);
  TTree * tree = (TTree*)f->Get(tname);
  return tree;

}
 AnalyzeESDtracks.C:1
 AnalyzeESDtracks.C:2
 AnalyzeESDtracks.C:3
 AnalyzeESDtracks.C:4
 AnalyzeESDtracks.C:5
 AnalyzeESDtracks.C:6
 AnalyzeESDtracks.C:7
 AnalyzeESDtracks.C:8
 AnalyzeESDtracks.C:9
 AnalyzeESDtracks.C:10
 AnalyzeESDtracks.C:11
 AnalyzeESDtracks.C:12
 AnalyzeESDtracks.C:13
 AnalyzeESDtracks.C:14
 AnalyzeESDtracks.C:15
 AnalyzeESDtracks.C:16
 AnalyzeESDtracks.C:17
 AnalyzeESDtracks.C:18
 AnalyzeESDtracks.C:19
 AnalyzeESDtracks.C:20
 AnalyzeESDtracks.C:21
 AnalyzeESDtracks.C:22
 AnalyzeESDtracks.C:23
 AnalyzeESDtracks.C:24
 AnalyzeESDtracks.C:25
 AnalyzeESDtracks.C:26
 AnalyzeESDtracks.C:27
 AnalyzeESDtracks.C:28
 AnalyzeESDtracks.C:29
 AnalyzeESDtracks.C:30
 AnalyzeESDtracks.C:31
 AnalyzeESDtracks.C:32
 AnalyzeESDtracks.C:33
 AnalyzeESDtracks.C:34
 AnalyzeESDtracks.C:35
 AnalyzeESDtracks.C:36
 AnalyzeESDtracks.C:37
 AnalyzeESDtracks.C:38
 AnalyzeESDtracks.C:39
 AnalyzeESDtracks.C:40
 AnalyzeESDtracks.C:41
 AnalyzeESDtracks.C:42
 AnalyzeESDtracks.C:43
 AnalyzeESDtracks.C:44
 AnalyzeESDtracks.C:45
 AnalyzeESDtracks.C:46
 AnalyzeESDtracks.C:47
 AnalyzeESDtracks.C:48
 AnalyzeESDtracks.C:49
 AnalyzeESDtracks.C:50
 AnalyzeESDtracks.C:51
 AnalyzeESDtracks.C:52
 AnalyzeESDtracks.C:53
 AnalyzeESDtracks.C:54
 AnalyzeESDtracks.C:55
 AnalyzeESDtracks.C:56
 AnalyzeESDtracks.C:57
 AnalyzeESDtracks.C:58
 AnalyzeESDtracks.C:59
 AnalyzeESDtracks.C:60
 AnalyzeESDtracks.C:61
 AnalyzeESDtracks.C:62
 AnalyzeESDtracks.C:63
 AnalyzeESDtracks.C:64
 AnalyzeESDtracks.C:65
 AnalyzeESDtracks.C:66
 AnalyzeESDtracks.C:67
 AnalyzeESDtracks.C:68
 AnalyzeESDtracks.C:69
 AnalyzeESDtracks.C:70
 AnalyzeESDtracks.C:71
 AnalyzeESDtracks.C:72
 AnalyzeESDtracks.C:73
 AnalyzeESDtracks.C:74
 AnalyzeESDtracks.C:75
 AnalyzeESDtracks.C:76
 AnalyzeESDtracks.C:77
 AnalyzeESDtracks.C:78
 AnalyzeESDtracks.C:79
 AnalyzeESDtracks.C:80
 AnalyzeESDtracks.C:81
 AnalyzeESDtracks.C:82
 AnalyzeESDtracks.C:83
 AnalyzeESDtracks.C:84
 AnalyzeESDtracks.C:85
 AnalyzeESDtracks.C:86
 AnalyzeESDtracks.C:87
 AnalyzeESDtracks.C:88
 AnalyzeESDtracks.C:89
 AnalyzeESDtracks.C:90
 AnalyzeESDtracks.C:91
 AnalyzeESDtracks.C:92
 AnalyzeESDtracks.C:93
 AnalyzeESDtracks.C:94
 AnalyzeESDtracks.C:95
 AnalyzeESDtracks.C:96
 AnalyzeESDtracks.C:97
 AnalyzeESDtracks.C:98
 AnalyzeESDtracks.C:99
 AnalyzeESDtracks.C:100
 AnalyzeESDtracks.C:101
 AnalyzeESDtracks.C:102
 AnalyzeESDtracks.C:103
 AnalyzeESDtracks.C:104
 AnalyzeESDtracks.C:105
 AnalyzeESDtracks.C:106
 AnalyzeESDtracks.C:107
 AnalyzeESDtracks.C:108
 AnalyzeESDtracks.C:109
 AnalyzeESDtracks.C:110
 AnalyzeESDtracks.C:111
 AnalyzeESDtracks.C:112
 AnalyzeESDtracks.C:113
 AnalyzeESDtracks.C:114
 AnalyzeESDtracks.C:115
 AnalyzeESDtracks.C:116
 AnalyzeESDtracks.C:117
 AnalyzeESDtracks.C:118
 AnalyzeESDtracks.C:119
 AnalyzeESDtracks.C:120
 AnalyzeESDtracks.C:121
 AnalyzeESDtracks.C:122
 AnalyzeESDtracks.C:123
 AnalyzeESDtracks.C:124
 AnalyzeESDtracks.C:125
 AnalyzeESDtracks.C:126
 AnalyzeESDtracks.C:127
 AnalyzeESDtracks.C:128
 AnalyzeESDtracks.C:129
 AnalyzeESDtracks.C:130
 AnalyzeESDtracks.C:131
 AnalyzeESDtracks.C:132
 AnalyzeESDtracks.C:133
 AnalyzeESDtracks.C:134
 AnalyzeESDtracks.C:135
 AnalyzeESDtracks.C:136
 AnalyzeESDtracks.C:137
 AnalyzeESDtracks.C:138
 AnalyzeESDtracks.C:139
 AnalyzeESDtracks.C:140
 AnalyzeESDtracks.C:141
 AnalyzeESDtracks.C:142
 AnalyzeESDtracks.C:143
 AnalyzeESDtracks.C:144
 AnalyzeESDtracks.C:145
 AnalyzeESDtracks.C:146
 AnalyzeESDtracks.C:147
 AnalyzeESDtracks.C:148
 AnalyzeESDtracks.C:149
 AnalyzeESDtracks.C:150
 AnalyzeESDtracks.C:151
 AnalyzeESDtracks.C:152
 AnalyzeESDtracks.C:153
 AnalyzeESDtracks.C:154
 AnalyzeESDtracks.C:155
 AnalyzeESDtracks.C:156
 AnalyzeESDtracks.C:157
 AnalyzeESDtracks.C:158
 AnalyzeESDtracks.C:159
 AnalyzeESDtracks.C:160
 AnalyzeESDtracks.C:161
 AnalyzeESDtracks.C:162
 AnalyzeESDtracks.C:163
 AnalyzeESDtracks.C:164
 AnalyzeESDtracks.C:165
 AnalyzeESDtracks.C:166
 AnalyzeESDtracks.C:167
 AnalyzeESDtracks.C:168
 AnalyzeESDtracks.C:169
 AnalyzeESDtracks.C:170
 AnalyzeESDtracks.C:171
 AnalyzeESDtracks.C:172
 AnalyzeESDtracks.C:173
 AnalyzeESDtracks.C:174
 AnalyzeESDtracks.C:175
 AnalyzeESDtracks.C:176
 AnalyzeESDtracks.C:177
 AnalyzeESDtracks.C:178
 AnalyzeESDtracks.C:179
 AnalyzeESDtracks.C:180
 AnalyzeESDtracks.C:181
 AnalyzeESDtracks.C:182
 AnalyzeESDtracks.C:183
 AnalyzeESDtracks.C:184
 AnalyzeESDtracks.C:185
 AnalyzeESDtracks.C:186
 AnalyzeESDtracks.C:187
 AnalyzeESDtracks.C:188
 AnalyzeESDtracks.C:189
 AnalyzeESDtracks.C:190
 AnalyzeESDtracks.C:191
 AnalyzeESDtracks.C:192
 AnalyzeESDtracks.C:193
 AnalyzeESDtracks.C:194
 AnalyzeESDtracks.C:195
 AnalyzeESDtracks.C:196
 AnalyzeESDtracks.C:197
 AnalyzeESDtracks.C:198
 AnalyzeESDtracks.C:199
 AnalyzeESDtracks.C:200
 AnalyzeESDtracks.C:201
 AnalyzeESDtracks.C:202
 AnalyzeESDtracks.C:203
 AnalyzeESDtracks.C:204
 AnalyzeESDtracks.C:205
 AnalyzeESDtracks.C:206
 AnalyzeESDtracks.C:207
 AnalyzeESDtracks.C:208
 AnalyzeESDtracks.C:209
 AnalyzeESDtracks.C:210
 AnalyzeESDtracks.C:211
 AnalyzeESDtracks.C:212
 AnalyzeESDtracks.C:213
 AnalyzeESDtracks.C:214
 AnalyzeESDtracks.C:215
 AnalyzeESDtracks.C:216
 AnalyzeESDtracks.C:217
 AnalyzeESDtracks.C:218
 AnalyzeESDtracks.C:219
 AnalyzeESDtracks.C:220
 AnalyzeESDtracks.C:221
 AnalyzeESDtracks.C:222
 AnalyzeESDtracks.C:223
 AnalyzeESDtracks.C:224
 AnalyzeESDtracks.C:225
 AnalyzeESDtracks.C:226
 AnalyzeESDtracks.C:227
 AnalyzeESDtracks.C:228
 AnalyzeESDtracks.C:229
 AnalyzeESDtracks.C:230
 AnalyzeESDtracks.C:231
 AnalyzeESDtracks.C:232
 AnalyzeESDtracks.C:233
 AnalyzeESDtracks.C:234
 AnalyzeESDtracks.C:235
 AnalyzeESDtracks.C:236
 AnalyzeESDtracks.C:237
 AnalyzeESDtracks.C:238
 AnalyzeESDtracks.C:239
 AnalyzeESDtracks.C:240
 AnalyzeESDtracks.C:241
 AnalyzeESDtracks.C:242
 AnalyzeESDtracks.C:243
 AnalyzeESDtracks.C:244
 AnalyzeESDtracks.C:245
 AnalyzeESDtracks.C:246
 AnalyzeESDtracks.C:247
 AnalyzeESDtracks.C:248
 AnalyzeESDtracks.C:249
 AnalyzeESDtracks.C:250
 AnalyzeESDtracks.C:251
 AnalyzeESDtracks.C:252
 AnalyzeESDtracks.C:253
 AnalyzeESDtracks.C:254
 AnalyzeESDtracks.C:255
 AnalyzeESDtracks.C:256
 AnalyzeESDtracks.C:257
 AnalyzeESDtracks.C:258
 AnalyzeESDtracks.C:259
 AnalyzeESDtracks.C:260
 AnalyzeESDtracks.C:261
 AnalyzeESDtracks.C:262
 AnalyzeESDtracks.C:263
 AnalyzeESDtracks.C:264
 AnalyzeESDtracks.C:265
 AnalyzeESDtracks.C:266
 AnalyzeESDtracks.C:267
 AnalyzeESDtracks.C:268
 AnalyzeESDtracks.C:269
 AnalyzeESDtracks.C:270
 AnalyzeESDtracks.C:271
 AnalyzeESDtracks.C:272
 AnalyzeESDtracks.C:273
 AnalyzeESDtracks.C:274
 AnalyzeESDtracks.C:275
 AnalyzeESDtracks.C:276
 AnalyzeESDtracks.C:277
 AnalyzeESDtracks.C:278
 AnalyzeESDtracks.C:279
 AnalyzeESDtracks.C:280
 AnalyzeESDtracks.C:281
 AnalyzeESDtracks.C:282
 AnalyzeESDtracks.C:283
 AnalyzeESDtracks.C:284
 AnalyzeESDtracks.C:285
 AnalyzeESDtracks.C:286
 AnalyzeESDtracks.C:287
 AnalyzeESDtracks.C:288
 AnalyzeESDtracks.C:289
 AnalyzeESDtracks.C:290
 AnalyzeESDtracks.C:291
 AnalyzeESDtracks.C:292
 AnalyzeESDtracks.C:293
 AnalyzeESDtracks.C:294
 AnalyzeESDtracks.C:295
 AnalyzeESDtracks.C:296
 AnalyzeESDtracks.C:297
 AnalyzeESDtracks.C:298
 AnalyzeESDtracks.C:299
 AnalyzeESDtracks.C:300
 AnalyzeESDtracks.C:301
 AnalyzeESDtracks.C:302
 AnalyzeESDtracks.C:303
 AnalyzeESDtracks.C:304
 AnalyzeESDtracks.C:305
 AnalyzeESDtracks.C:306
 AnalyzeESDtracks.C:307
 AnalyzeESDtracks.C:308
 AnalyzeESDtracks.C:309
 AnalyzeESDtracks.C:310
 AnalyzeESDtracks.C:311
 AnalyzeESDtracks.C:312
 AnalyzeESDtracks.C:313
 AnalyzeESDtracks.C:314
 AnalyzeESDtracks.C:315
 AnalyzeESDtracks.C:316
 AnalyzeESDtracks.C:317
 AnalyzeESDtracks.C:318
 AnalyzeESDtracks.C:319
 AnalyzeESDtracks.C:320
 AnalyzeESDtracks.C:321
 AnalyzeESDtracks.C:322
 AnalyzeESDtracks.C:323
 AnalyzeESDtracks.C:324
 AnalyzeESDtracks.C:325
 AnalyzeESDtracks.C:326
 AnalyzeESDtracks.C:327
 AnalyzeESDtracks.C:328
 AnalyzeESDtracks.C:329
 AnalyzeESDtracks.C:330
 AnalyzeESDtracks.C:331
 AnalyzeESDtracks.C:332
 AnalyzeESDtracks.C:333
 AnalyzeESDtracks.C:334
 AnalyzeESDtracks.C:335
 AnalyzeESDtracks.C:336
 AnalyzeESDtracks.C:337
 AnalyzeESDtracks.C:338
 AnalyzeESDtracks.C:339
 AnalyzeESDtracks.C:340
 AnalyzeESDtracks.C:341
 AnalyzeESDtracks.C:342
 AnalyzeESDtracks.C:343
 AnalyzeESDtracks.C:344
 AnalyzeESDtracks.C:345
 AnalyzeESDtracks.C:346
 AnalyzeESDtracks.C:347
 AnalyzeESDtracks.C:348
 AnalyzeESDtracks.C:349
 AnalyzeESDtracks.C:350
 AnalyzeESDtracks.C:351
 AnalyzeESDtracks.C:352
 AnalyzeESDtracks.C:353
 AnalyzeESDtracks.C:354
 AnalyzeESDtracks.C:355
 AnalyzeESDtracks.C:356
 AnalyzeESDtracks.C:357
 AnalyzeESDtracks.C:358
 AnalyzeESDtracks.C:359
 AnalyzeESDtracks.C:360
 AnalyzeESDtracks.C:361
 AnalyzeESDtracks.C:362
 AnalyzeESDtracks.C:363
 AnalyzeESDtracks.C:364
 AnalyzeESDtracks.C:365
 AnalyzeESDtracks.C:366
 AnalyzeESDtracks.C:367
 AnalyzeESDtracks.C:368
 AnalyzeESDtracks.C:369
 AnalyzeESDtracks.C:370
 AnalyzeESDtracks.C:371
 AnalyzeESDtracks.C:372
 AnalyzeESDtracks.C:373
 AnalyzeESDtracks.C:374
 AnalyzeESDtracks.C:375
 AnalyzeESDtracks.C:376
 AnalyzeESDtracks.C:377
 AnalyzeESDtracks.C:378
 AnalyzeESDtracks.C:379
 AnalyzeESDtracks.C:380
 AnalyzeESDtracks.C:381
 AnalyzeESDtracks.C:382
 AnalyzeESDtracks.C:383
 AnalyzeESDtracks.C:384
 AnalyzeESDtracks.C:385
 AnalyzeESDtracks.C:386
 AnalyzeESDtracks.C:387
 AnalyzeESDtracks.C:388
 AnalyzeESDtracks.C:389
 AnalyzeESDtracks.C:390
 AnalyzeESDtracks.C:391
 AnalyzeESDtracks.C:392
 AnalyzeESDtracks.C:393
 AnalyzeESDtracks.C:394
 AnalyzeESDtracks.C:395
 AnalyzeESDtracks.C:396
 AnalyzeESDtracks.C:397
 AnalyzeESDtracks.C:398
 AnalyzeESDtracks.C:399
 AnalyzeESDtracks.C:400
 AnalyzeESDtracks.C:401
 AnalyzeESDtracks.C:402
 AnalyzeESDtracks.C:403
 AnalyzeESDtracks.C:404
 AnalyzeESDtracks.C:405
 AnalyzeESDtracks.C:406
 AnalyzeESDtracks.C:407
 AnalyzeESDtracks.C:408
 AnalyzeESDtracks.C:409
 AnalyzeESDtracks.C:410
 AnalyzeESDtracks.C:411
 AnalyzeESDtracks.C:412
 AnalyzeESDtracks.C:413
 AnalyzeESDtracks.C:414
 AnalyzeESDtracks.C:415
 AnalyzeESDtracks.C:416
 AnalyzeESDtracks.C:417
 AnalyzeESDtracks.C:418
 AnalyzeESDtracks.C:419
 AnalyzeESDtracks.C:420
 AnalyzeESDtracks.C:421
 AnalyzeESDtracks.C:422
 AnalyzeESDtracks.C:423
 AnalyzeESDtracks.C:424
 AnalyzeESDtracks.C:425
 AnalyzeESDtracks.C:426
 AnalyzeESDtracks.C:427
 AnalyzeESDtracks.C:428
 AnalyzeESDtracks.C:429
 AnalyzeESDtracks.C:430
 AnalyzeESDtracks.C:431
 AnalyzeESDtracks.C:432
 AnalyzeESDtracks.C:433
 AnalyzeESDtracks.C:434
 AnalyzeESDtracks.C:435
 AnalyzeESDtracks.C:436
 AnalyzeESDtracks.C:437
 AnalyzeESDtracks.C:438
 AnalyzeESDtracks.C:439
 AnalyzeESDtracks.C:440
 AnalyzeESDtracks.C:441
 AnalyzeESDtracks.C:442
 AnalyzeESDtracks.C:443
 AnalyzeESDtracks.C:444
 AnalyzeESDtracks.C:445
 AnalyzeESDtracks.C:446
 AnalyzeESDtracks.C:447
 AnalyzeESDtracks.C:448
 AnalyzeESDtracks.C:449
 AnalyzeESDtracks.C:450
 AnalyzeESDtracks.C:451
 AnalyzeESDtracks.C:452
 AnalyzeESDtracks.C:453
 AnalyzeESDtracks.C:454
 AnalyzeESDtracks.C:455
 AnalyzeESDtracks.C:456
 AnalyzeESDtracks.C:457
 AnalyzeESDtracks.C:458
 AnalyzeESDtracks.C:459
 AnalyzeESDtracks.C:460
 AnalyzeESDtracks.C:461
 AnalyzeESDtracks.C:462
 AnalyzeESDtracks.C:463
 AnalyzeESDtracks.C:464
 AnalyzeESDtracks.C:465
 AnalyzeESDtracks.C:466
 AnalyzeESDtracks.C:467
 AnalyzeESDtracks.C:468
 AnalyzeESDtracks.C:469
 AnalyzeESDtracks.C:470
 AnalyzeESDtracks.C:471
 AnalyzeESDtracks.C:472
 AnalyzeESDtracks.C:473