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.                  *
 **************************************************************************/
//
// Input: ESDevent
// Functionality: find ESDtrack pairs according to some criteria to form one cosmic ray; AliTPCCosmicTrackfit then performs the combined track fit for the pair
//
//  Xianguo Lu 
//  lu@physi.uni-heidelberg.de
//  Xianguo.Lu@cern.ch
//

#ifndef ALICOSMICTRACKER_H
#define ALICOSMICTRACKER_H

class AliESDCosmicTrack;
class AliTPCCosmicTrackfit;

class AliESDEvent;

class AliCosmicTracker
{
 public:

  typedef Bool_t (*CutFunc)(const AliESDtrack *trk);

  AliCosmicTracker(const Int_t dlev=0, const TString tag="test"); 
  ~AliCosmicTracker();

  void SetESDEvent(AliESDEvent *esd);
  Int_t Process(const TString tag="", const Bool_t kprint=kFALSE);
  TClonesArray * GetTrackStack() const {return fTrackStack;}

  TTreeSRedirector * GetStreamer() const {return fStreamer;}
  Int_t GetDebugLevel() const {return fDebugLevel;}
  Int_t GetErrFlag() const;

  void SetCutPull(     const Int_t ii, const Double_t cut){ fCutPull[ii] = cut;}
  void SetCutDelta(    const Int_t ii, const Double_t cut){ fCutDelta[ii] = cut;}

  void SetCutdPhi(const Double_t cut){fCutdPhi = cut;}
  void SetCutdTheta(const Double_t cut){fCutdTheta = cut;}

  void SetUserESDtrackCut(CutFunc func){fUserCut = func;}

  static TClonesArray *FindCosmic(AliESDEvent *event, const Bool_t kadd);

 private:
  AliCosmicTracker(const AliCosmicTracker &p);
  AliCosmicTracker & operator=(const AliCosmicTracker &p);

  static Double_t CutFindable(){return 0.5;}          //cut on findable ratio of TPC cluster; DCA-anormlay is caused by laser!! should check trigger!!

  Bool_t ESDtrackCut(AliESDtrack * trk, Double_t &findabler);

  Bool_t IsPair(AliESDtrack* trk0, AliESDtrack*trk1);
  void WriteStreamer(Int_t ntrk, AliESDCosmicTrack *costrk);

  CutFunc fUserCut;                               //user ESDtrack function
  TTreeSRedirector *fStreamer;                   //debug streamer
  Int_t fDebugLevel;                             //debug level

  AliESDEvent *fESDEvent;                        //esd
  AliTPCCosmicTrackfit *fCosmicTrackfit;          //cosmictrackfit
  TClonesArray *fTrackStack;                     //storing cosmic ray

  AliExternalTrackParam fTrack0;                //upper track param estimated at x=0 from IsPair
  AliExternalTrackParam fTrack1;                //lower track param estimated at x=0 from IsPair

  TVector3 fRawVtx;                             //raw vertex position calculated only from upper and lower inner most TPC cluster
  Double_t fRawDCA;                              //raw DCA (2d) calculated only from upper and lower inner most TPC cluster 
  Double_t fdPhi;                                //phi0-phi1-pi of the EDS tracks
  Double_t fCutdPhi;                           //cut

  Double_t fdTheta;                              //theta0+theta1-pi of the ESD tracks
  Double_t fCutdTheta;                         //cut

  Double_t fPull[5];                             //pull of the two ESD tracks at x=0
  Double_t fCutPull[5];                            //pull

  Double_t fDelta[5];                             //delta of the two ESD tracks at x=0
  Double_t fCutDelta[5];                          //delta cut

  Int_t fErrFlagESDtrackCut;                       //error status in ESDtrackCut()
  Int_t fErrFlagIsPair;                            //error status in IsPair()
  Int_t fErrFlagCosmicTrackfit;                    //error status in fCosmicTrackfit
};

#endif


 AliCosmicTracker.h:1
 AliCosmicTracker.h:2
 AliCosmicTracker.h:3
 AliCosmicTracker.h:4
 AliCosmicTracker.h:5
 AliCosmicTracker.h:6
 AliCosmicTracker.h:7
 AliCosmicTracker.h:8
 AliCosmicTracker.h:9
 AliCosmicTracker.h:10
 AliCosmicTracker.h:11
 AliCosmicTracker.h:12
 AliCosmicTracker.h:13
 AliCosmicTracker.h:14
 AliCosmicTracker.h:15
 AliCosmicTracker.h:16
 AliCosmicTracker.h:17
 AliCosmicTracker.h:18
 AliCosmicTracker.h:19
 AliCosmicTracker.h:20
 AliCosmicTracker.h:21
 AliCosmicTracker.h:22
 AliCosmicTracker.h:23
 AliCosmicTracker.h:24
 AliCosmicTracker.h:25
 AliCosmicTracker.h:26
 AliCosmicTracker.h:27
 AliCosmicTracker.h:28
 AliCosmicTracker.h:29
 AliCosmicTracker.h:30
 AliCosmicTracker.h:31
 AliCosmicTracker.h:32
 AliCosmicTracker.h:33
 AliCosmicTracker.h:34
 AliCosmicTracker.h:35
 AliCosmicTracker.h:36
 AliCosmicTracker.h:37
 AliCosmicTracker.h:38
 AliCosmicTracker.h:39
 AliCosmicTracker.h:40
 AliCosmicTracker.h:41
 AliCosmicTracker.h:42
 AliCosmicTracker.h:43
 AliCosmicTracker.h:44
 AliCosmicTracker.h:45
 AliCosmicTracker.h:46
 AliCosmicTracker.h:47
 AliCosmicTracker.h:48
 AliCosmicTracker.h:49
 AliCosmicTracker.h:50
 AliCosmicTracker.h:51
 AliCosmicTracker.h:52
 AliCosmicTracker.h:53
 AliCosmicTracker.h:54
 AliCosmicTracker.h:55
 AliCosmicTracker.h:56
 AliCosmicTracker.h:57
 AliCosmicTracker.h:58
 AliCosmicTracker.h:59
 AliCosmicTracker.h:60
 AliCosmicTracker.h:61
 AliCosmicTracker.h:62
 AliCosmicTracker.h:63
 AliCosmicTracker.h:64
 AliCosmicTracker.h:65
 AliCosmicTracker.h:66
 AliCosmicTracker.h:67
 AliCosmicTracker.h:68
 AliCosmicTracker.h:69
 AliCosmicTracker.h:70
 AliCosmicTracker.h:71
 AliCosmicTracker.h:72
 AliCosmicTracker.h:73
 AliCosmicTracker.h:74
 AliCosmicTracker.h:75
 AliCosmicTracker.h:76
 AliCosmicTracker.h:77
 AliCosmicTracker.h:78
 AliCosmicTracker.h:79
 AliCosmicTracker.h:80
 AliCosmicTracker.h:81
 AliCosmicTracker.h:82
 AliCosmicTracker.h:83
 AliCosmicTracker.h:84
 AliCosmicTracker.h:85
 AliCosmicTracker.h:86
 AliCosmicTracker.h:87
 AliCosmicTracker.h:88
 AliCosmicTracker.h:89
 AliCosmicTracker.h:90
 AliCosmicTracker.h:91
 AliCosmicTracker.h:92
 AliCosmicTracker.h:93
 AliCosmicTracker.h:94
 AliCosmicTracker.h:95
 AliCosmicTracker.h:96
 AliCosmicTracker.h:97
 AliCosmicTracker.h:98
 AliCosmicTracker.h:99
 AliCosmicTracker.h:100
 AliCosmicTracker.h:101
 AliCosmicTracker.h:102