ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

///////////////////////////////////////////////////////////////////////////
//                                                                       //
//                                                                       //
// Analysis for identified charged hadron spectra. TOF                   //
//                                                                       //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#include "Riostream.h"
#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TList.h"
#include "TMath.h"
#include "TCanvas.h"
#include "TObjArray.h"
#include "TF1.h"
#include "TFile.h"

#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"

#include "AliHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliGenCocktailEventHeader.h"

#include "AliPID.h"
#include "AliESDtrackCuts.h"
#include "AliESDVertex.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliESDtrack.h"
#include "AliESDpid.h"

#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"

#include "AliAnalysisFilter.h"
#include "AliCFContainer.h"
#include "AliCFFrame.h"
#include "AliCFGridSparse.h"
#include "TDatabasePDG.h"
#include "TROOT.h"
#include "TSystem.h"
#include "AliMultiplicity.h"

#include "AliLog.h"

#include "TOFSpectrappAnalysis.h"
//cambio
#include "AliESDUtils.h"
//fine cambio
ClassImp(TOFSpectrappAnalysis)

//________________________________________________________________________
TOFSpectrappAnalysis::TOFSpectrappAnalysis() 
: AliAnalysisTaskSE("TaskChargedHadron"), fESD(0), fESDtrackCuts(0), fESDpid(0x0),
  fMCtrue(0),
  fAlephParameters(),
  spdCorr(-1),
  multiplicity(0),
  ZPrimVertex(0),
  frun(0),
  frunOld(0),
  fLoadOCDB(kTRUE),
  correctTExp(kTRUE),
  calibrateESD(kTRUE), useT0TOF(kTRUE), timeResolution(96.), tuneTOFMC(kFALSE),
  fTreeTrack(0),
  //fTreeEv(0),
  hNumEv(0),
  tofCalib(0),
  t0maker(0),
  fDCAXY(-999), fDCAZ(-999), kselimppar(-999), fmatch(-999), fmom(-999), flength(-999), fsign(-999), ftimetof(-999), fexptimeel(-999), fexptimemu(-999), fexptimepi(-999), fexptimeka(-999), fexptimepr(-999), ftofchan(-999), feta(-999), fphi(-999), fmomtrasv(-999), t0track(-999), t0trackSigma(-999), sigmael(-999), sigmamu(-999), sigmapi(-999), sigmaka(-999), sigmapr(-999), TPCSignal(-999), TPCSigmaPI(-999), TPCSigmaKA(-999), TPCSigmaPR(-999), TOFlabel0(-999), TOFlabel1(-999), TOFlabel2(-999)    
{
  // default Constructor
  for(Int_t i=0; i<5;i++){r1[i]=-999;}
}


//________________________________________________________________________
TOFSpectrappAnalysis::TOFSpectrappAnalysis(const char *name) 
  : AliAnalysisTaskSE(name), fESD(0),fESDtrackCuts(0),fESDpid(0x0),
    fMCtrue(0),
    fAlephParameters(),
    spdCorr(-1),
    multiplicity(0),
    ZPrimVertex(-999),
    frun(0),
    frunOld(0),
    fLoadOCDB(kTRUE),
    correctTExp(kTRUE),
    calibrateESD(kTRUE), useT0TOF(kTRUE), timeResolution(96.), tuneTOFMC(kFALSE),
    fTreeTrack(0),
    //fTreeEv(0),
    hNumEv(0),
    tofCalib(0),
    t0maker(0),
    fDCAXY(-999), fDCAZ(-999), kselimppar(-999), fmatch(-999), fmom(-999), flength(-999), fsign(-999), ftimetof(-999), fexptimeel(-999), fexptimemu(-999), fexptimepi(-999), fexptimeka(-999), fexptimepr(-999), ftofchan(-999), feta(-999), fphi(-999), fmomtrasv(-999), t0track(-999), t0trackSigma(-999), sigmael(-999), sigmamu(-999), sigmapi(-999), sigmaka(-999), sigmapr(-999), TPCSignal(-999), TPCSigmaPI(-999), TPCSigmaKA(-999), TPCSigmaPR(-999), TOFlabel0(-999), TOFlabel1(-999), TOFlabel2(-999)    
{
  
  //
  // standard constructur which should be used
  //
  Printf("*** CONSTRUCTOR CALLED ****");
  // 
  /* real */
  for(Int_t i=0; i<5;i++){r1[i]=-999;}


  fAlephParameters[0] = 0.0283086;
  fAlephParameters[1] = 2.63394e+01;
  fAlephParameters[2] = 5.04114e-11;
  fAlephParameters[3] = 2.12543e+00;
  fAlephParameters[4] = 4.88663e+00;
  //
  // initialize PID object
  //

  
  //tofCalib = new AliTOFcalib();

  //cambio

  //fESDpid = new AliESDpid();

  //fine cambio
  //t0maker = new AliTOFT0maker(fESDpid, tofCalib); 
  //
  // create track cuts
  //
  AliESDtrackCuts* ESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts");
  fESDtrackCuts = (AliESDtrackCuts*) ESDtrackCuts->GetStandardITSTPCTrackCuts2010(kTRUE);

  //fESDpid->GetTPCResponse().SetBetheBlochParameters(fAlephParameters[0],fAlephParameters[1],fAlephParameters[2],fAlephParameters[3],fAlephParameters[4]);

  //
  //Initialize();
  // Output slot #0 writes into a TList container
  //DefineOutput(1, TTree::Class());
  DefineOutput(1, TTree::Class());
  DefineOutput(2, TH1D::Class());

}


//________________________________________________________________________
Int_t TOFSpectrappAnalysis::Mult()
{
  AliESDtrackCuts* esdTrackCutsMult = new AliESDtrackCuts;
  
  // TPC
  esdTrackCutsMult->SetMinNClustersTPC(70);//ok
  esdTrackCutsMult->SetMaxChi2PerClusterTPC(4);//ok
  esdTrackCutsMult->SetAcceptKinkDaughters(kFALSE);//ok
  esdTrackCutsMult->SetRequireTPCRefit(kTRUE);//ok
  // ITS
  esdTrackCutsMult->SetRequireITSRefit(kTRUE);//ok
  esdTrackCutsMult->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
					     AliESDtrackCuts::kAny);//ok
  
  esdTrackCutsMult->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
  
  esdTrackCutsMult->SetMaxDCAToVertexZ(2);//ok
  
  esdTrackCutsMult->SetDCAToVertex2D(kFALSE);//ok
  esdTrackCutsMult->SetRequireSigmaToVertex(kFALSE);//ok
  
  esdTrackCutsMult->SetEtaRange(-0.8,+0.8);
  esdTrackCutsMult->SetPtRange(0.15, 1e10);
  
  // Here is what we finally want:
  Int_t multipli = esdTrackCutsMult->CountAcceptedTracks(fESD);
  delete esdTrackCutsMult;
  return multipli;
  
 }


//________________________________________________________________________
void TOFSpectrappAnalysis::UserCreateOutputObjects() 
{
  // Create histograms
  // Called once
  
  OpenFile(1);

  fTreeTrack = new TTree("TreeTrack","Track Properties");
  fTreeTrack->Branch("spdCorr",&spdCorr,"spdCorr/F");  
  fTreeTrack->Branch("multiplicity",&multiplicity,"multiplicity/I");
  fTreeTrack->Branch("DCAXY",&fDCAXY,"fDCAXY/F");  
  fTreeTrack->Branch("DCAZ",&fDCAZ,"fDCAZ/F");  
  //fTreeTrack->Branch("ZPrimVertex",&ZPrimVertex,"ZPrimVertex/D");  
  //fTreeTrack->Branch("kselimppar",&kselimppar,"kselimppar/I");  
  fTreeTrack->Branch("fmatch",&fmatch,"fmatch/I");
  fTreeTrack->Branch("fmom",&fmom,"fmom/D");
  fTreeTrack->Branch("length",&flength,"length/D");
  fTreeTrack->Branch("sign",&fsign,"sign/I");
  fTreeTrack->Branch("timetof",&ftimetof,"timetof/D");
  fTreeTrack->Branch("exptimeel",&fexptimeel,"exptimeel/D");
  fTreeTrack->Branch("exptimemu",&fexptimemu,"exptimemu/D");
  fTreeTrack->Branch("exptimepi",&fexptimepi,"exptimepi/D");
  fTreeTrack->Branch("exptimeka",&fexptimeka,"exptimeka/D");
  fTreeTrack->Branch("exptimepr",&fexptimepr,"exptimepr/D");
  fTreeTrack->Branch("tofchan",&ftofchan,"tofchan/I"); 
  fTreeTrack->Branch("eta",&feta,"eta/D");
  fTreeTrack->Branch("phi",&fphi,"phi/D");
  fTreeTrack->Branch("momtrasv",&fmomtrasv,"momtrasv/D");
  fTreeTrack->Branch("t0trackSigma",&t0trackSigma,"t0trackSigma/F");
  fTreeTrack->Branch("t0track",&t0track,"t0track/F");
  fTreeTrack->Branch("sigmael",&sigmael,"sigmael/D");
  fTreeTrack->Branch("sigmamu",&sigmamu,"sigmamu/D");
  fTreeTrack->Branch("sigmapi",&sigmapi,"sigmapi/D");
  fTreeTrack->Branch("sigmaka",&sigmaka,"sigmaka/D");
  fTreeTrack->Branch("sigmapr",&sigmapr,"sigmapr/D");
 //  //fTreeTrack->Branch("TPCsignal",&TPCSignal,"TPCsignal/D");
//   //fTreeTrack->Branch("TPCSigmaPI",&TPCSigmaPI,"TPCSigmaPI/F");
//   //fTreeTrack->Branch("TPCSigmaKA",&TPCSigmaKA,"TPCSigmaKA/F");
//   //fTreeTrack->Branch("TPCSigmaPR",&TPCSigmaPR,"TPCSigmaPR/F");
//   fTreeTrack->Branch("r10",&r1[0],"r10/D");
//   fTreeTrack->Branch("r11",&r1[1],"r11/D");
//   fTreeTrack->Branch("r12",&r1[2],"r12/D");
//   fTreeTrack->Branch("r13",&r1[3],"r13/D");
//   fTreeTrack->Branch("r14",&r1[4],"r14/D");
//   // fTreeTrack->Branch("TOFlabel0",&TOFlabel0,"TOFlabel0/I");
// //   fTreeTrack->Branch("TOFlabel1",&TOFlabel1,"TOFlabel1/I");
// //   fTreeTrack->Branch("TOFlabel2",&TOFlabel2,"TOFlabel2/I");

 
  PostData(1, fTreeTrack );

  // fTreeEv = new TTree("TreeEv","Event Properties");
//   fTreeEv->Branch("multiplicity",&multiplicity,"multiplicity/I");  
//   fTreeEv->Branch("spdCorr",&spdCorr,"spdCorr/F");  
//   //fTreeEv->Branch("ZPrimVertex",&ZPrimVertex,"ZPrimVertex/D"); 
  

  OpenFile(2);
  hNumEv=new TH1D("NemEv","NemEv",4,1,5);
  PostData(2, hNumEv);

}

//________________________________________________________________________
void TOFSpectrappAnalysis::UserExec(Option_t *) 
{
  //
  // main event loop
  //
 
  
  multiplicity=-999, ZPrimVertex=-999, frun=-999, spdCorr=-1.0;

  fESD = dynamic_cast<AliESDEvent*>( InputEvent() );
  if (!fESD) {
    Printf("ERROR: fESD not available");
    return;
  }
  
  if (!fESDtrackCuts) {
    Printf("ERROR: fESDtrackCuts not available");
    return;
  }

  hNumEv->Fill(1);

  //cambio
  AliESDInputHandler* esdH = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  if (esdH)
    fESDpid = esdH->GetESDpid();
  //fine cambio
  //
  // check if event is selected by physics selection class
  //
  Bool_t isSelected = kFALSE;
  isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()& AliVEvent::kMB);

  if (!isSelected) {
    return;
  }
  
  hNumEv->Fill(2);

  //
  // monitor vertex position
  //
  const AliESDVertex *vertex = fESD->GetPrimaryVertexTracks(); //! Primary vertex estimated using ESD tracks
  if(vertex->GetNContributors()<1) { // # of tracklets/tracks used for the estimate
    // SPD vertex
    vertex = fESD->GetPrimaryVertexSPD(); //! Primary vertex estimated by the SPD
    if(vertex->GetNContributors()<1) vertex = 0x0;
  }  

  if (!vertex) {
    return;
  } 
  
  hNumEv->Fill(3);

  if (vertex) {ZPrimVertex=vertex->GetZ();}
  if(TMath::Abs(ZPrimVertex)>10){return;}
  
  hNumEv->Fill(4);
  
  multiplicity=Mult();
  
  //multiplicity as defined by Marek
  const AliMultiplicity *mult = fESD->GetMultiplicity();
  Float_t nClusters[6]={0.0,0.0,0.0,0.0,0.0,0.0};
  for(Int_t ilay=0; ilay<6; ilay++)
    {
      nClusters[ilay] = (Float_t)mult->GetNumberOfITSClusters(ilay);
    }
  //cambio
  spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],vertex->GetZ());
  //fine cambio
  //fTreeEv->Fill();
  

  //TOF settings done in the TOF tender
  
  frun = fESD->GetRunNumber();
 //  if(frun==frunOld){fLoadOCDB=kFALSE;}else {fLoadOCDB=kTRUE;}
//   //if (tuneTOFMC) calibrateESD = kFALSE;
//   Double_t *T0TOF;
//   if(fLoadOCDB){
//   AliCDBManager *cdb = AliCDBManager::Instance();
//   cdb->SetDefaultStorage("alien://folder=/alice/data/2010/OCDB");
//   //cdb->SetDefaultStorage("raw://");
//   cdb->SetRun(frun);}
  
//   /* init TOF calibration */
//   if (correctTExp)
//     tofCalib->SetCorrectTExp(kTRUE);
//   tofCalib->Init();
  
//   /* init TOF T0-maker */
//   t0maker->SetTimeResolution(timeResolution);
  
//   /* calibrate ESD */
//   if (calibrateESD)
//     tofCalib->CalibrateESD(fESD);
   
//   T0TOF=t0maker->ComputeT0TOF(fESD);// calcola il t0 solo col tof in 10 bin di pt e lo setta in AliTOFPidResponse 

//   //scrive i valori precedenti nel TOFHeader
//   t0maker->WriteInESD(fESD); 

//   //setta T0_TOF in AliTOFPidResponse ovvero i valori settati in AliTOFHeader. Se non ci sono setta T0spread
//   fESDpid->SetTOFResponse(fESD,AliESDpid::kTOF_T0); 


//   fESDpid->MakePID(fESD,kFALSE); //calcola la sigma e le gi in più definisce la flag kTOFmismatch
  

  //
  // track loop
  //
  
  //const Float_t kNsigmaCut = 3;
  //const Float_t k2sigmaCorr = 1/(0.5*(TMath::Erf(kNsigmaCut/sqrt(2))-TMath::Erf(-kNsigmaCut/sqrt(2))))/*1/0.9545*/;
  //Float_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z for the vertex cut
  
  for (Int_t i=0;i<fESD->GetNumberOfTracks();++i) {
    
    AliESDtrack *track =fESD->GetTrack(i); 
    if (!track){continue;}
    // start TOF analysis
    
    fDCAXY=-999, fDCAZ=-999, kselimppar=-999, fmatch=-999, fmom=-999, flength=-999, fsign=-999, ftimetof=-999, fexptimeel=-999, fexptimeel=-999, fexptimepi=-999, fexptimeka=-999, fexptimepr=-999, ftofchan=-999, feta=-999, fphi=-999, fmomtrasv=-999, sigmael=-999, sigmamu=-999, sigmapi=-999, t0track=-999, t0trackSigma=-999, sigmaka=-999, sigmapr=-999, TPCSignal=-999, TPCSigmaPI=-999, TPCSigmaKA=-999, TPCSigmaPR=-999, r1[0]=-999,r1[1]=-999,r1[2]=-999,r1[3]=-999,r1[4]=-999;
    
    if (!fESDtrackCuts->AcceptTrack(track)) {continue;}
    if (SelectOnImpPar(track)) {kselimppar=1;}else {kselimppar=0;}
    if ((track->GetStatus()&AliESDtrack::kTOFout)==0) {continue;}
    if ((track->GetStatus()&AliESDtrack::kTIME)==0) {continue;}  
    if (!(track->GetStatus()&AliESDtrack::kTOFmismatch)==0) {fmatch=0;}else {fmatch=1;}  
    track->GetImpactParameters(fDCAXY, fDCAZ);
    track->GetTOFpid(r1);
    fmom=track->GetP();  // This function returns the track momentum
    flength=track->GetIntegratedLength();
    fsign=track->GetSign();
    ftimetof=track->GetTOFsignal();
    Double_t inttime[5]; 
    track->GetIntegratedTimes(inttime);// Returns the array with integrated times for each particle hypothesis
    fexptimeel=inttime[0];
    fexptimemu=inttime[1];
    fexptimepi=inttime[2];
    fexptimeka=inttime[3];
    fexptimepr=inttime[4];  
    ftofchan=track->GetTOFCalChannel(); // Channel Index of the TOF Signal
    feta=track->Eta();// return pseudorapidity return -TMath::Log(TMath::Tan(0.5 * Theta())); 
    fphi=track->Phi()* 180 / TMath::Pi();// Returns the azimuthal angle of momentum  0 <= phi < 2*pi
    fmomtrasv=track->Pt(); 
    t0track = fESDpid->GetTOFResponse().GetStartTime(fmom); // T0best time
    t0trackSigma = fESDpid->GetTOFResponse().GetStartTimeRes(fmom); // T0best time
    Double_t sigma[5];
    for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++){
      sigma[ipart] = fESDpid->GetTOFResponse().GetExpectedSigma(fmom, inttime[ipart], AliPID::ParticleMass(ipart));}
    sigmael=sigma[0];
    sigmamu=sigma[1];
    sigmapi=sigma[2];
    sigmaka=sigma[3];
    sigmapr=sigma[4];
    Int_t TOFLAB[3];
    track->GetTOFLabel(TOFLAB);
    TOFlabel0=TOFLAB[0];
    TOFlabel1=TOFLAB[1];
    TOFlabel2=TOFLAB[2];
    //TPCSignal = track->GetTPCsignal();
    //TPCSigmaPI=fESDpid->NumberOfSigmasTPC(track,AliPID::kPion);
    //TPCSigmaKA=fESDpid->NumberOfSigmasTPC(track,AliPID::kKaon);
    //TPCSigmaPR=fESDpid->NumberOfSigmasTPC(track,AliPID::kProton);
    fTreeTrack->Fill(); 
    
    /*
      kTOFout = TOF matching
      kTIME = good integrated time
      100000 > track->GetTOFsignal() > 12000 = TOF time reasanble range
      tracklength > 365 = should be greater than the TOF radius (370 cm)
    */
    
    
    
  
    
    
  } // end of track loop
  
  frunOld=frun;
  
  
  // Post output data  
  PostData(1, fTreeTrack);
  //PostData(1, fTreeEv);
  PostData(2, hNumEv);

}      


//________________________________________________________________________
void TOFSpectrappAnalysis::Terminate(Option_t *) 
{
  // Draw result to the screen
  // Called once at the end of the query
  Printf("*** CONSTRUCTOR CALLED ****");
  fTreeTrack = dynamic_cast<TTree*> (GetOutputData(1));
  if (!fTreeTrack) {
    Printf("ERROR: fTreeTrack not available");
    return;   
  } 
  
  system("touch ok.job");
}


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