+// @(#) $Id$
+
#ifndef ALILEVEL3_H
#define ALILEVEL3_H
+#ifndef no_root
#include <TObject.h>
#include <TFile.h>
+#endif
+
+#ifdef use_newio
+class AliRunLoader;
+#endif
#include "AliL3DigitData.h"
#include "AliL3RootTypes.h"
class AliL3DigitRowData;
class AliL3TrackSegmentData;
class AliL3DigitData;
-class AliL3Transform;
class AliL3ConfMapper;
class AliL3Vertex;
class AliL3VertexFinder;
class AliL3TrackMerger;
class AliL3GlobalMerger;
+#ifndef no_root
class TDirectory;
-class AliL3Transform;
+#endif
class AliL3ClustFinderNew;
class AliL3Merger;
class AliL3InterMerger;
-#ifdef use_aliroot
class AliL3FileHandler;
-#else
class AliL3MemHandler;
-#endif
class AliL3Benchmark;
+#ifdef no_root
+class AliLevel3 {
+#else
class AliLevel3 : public TObject {
+#endif
private:
- UInt_t fNTrackData;
+ UInt_t fNTrackData; //count data
AliL3TrackSegmentData* fTrackData; //!
AliL3ConfMapper *fTracker; //!
AliL3Vertex *fVertex; //!
AliL3GlobalMerger *fGlobalMerger; //!
AliL3InterMerger *fInterMerger; //!
AliL3ClustFinderNew *fClusterFinder; //!
- #ifdef use_aliroot
- AliL3FileHandler *fFileHandler; //!
- #else
AliL3MemHandler *fFileHandler; //!
- #endif
AliL3Benchmark *fBenchmark;//!
- Int_t fNPatch;
- Int_t fRow[6][2];
- Char_t fPath[256];
- AliL3Transform *fTransformer; //!
- TDirectory *savedir;
- TFile *fInputFile;
- TFile *fOutputFile;
- Bool_t fFindVertex;
- void Init();
+
+ Int_t fEvent; //event number
+ Int_t fNPatch; //number of patches
+ Int_t fRow[6][2];//rows
+ Float_t fEta[2]; //eta
+
+ Char_t *fInputFile;//!
+#ifdef use_newio
+ AliRunLoader *fRunLoader; //runloader
+#endif
+ Char_t fPath[256]; //path to aliroot
+ Char_t fWriteOutPath[256]; //path to store
+
+ Bool_t fDoRoi; //do region of interest
+ Bool_t fFindVertex; //find vertex
+ Bool_t fDoNonVertex;//do non vertex pass
+ Bool_t fPileUp; //do pileup
+ Bool_t fNoCF; //dont do cluster finder
+
+ Bool_t fUseBinary; //use binary input
+ Bool_t fWriteOut; //write tracks
+
+ static Bool_t fgDoVertexFit; //do vertex fix
+
+ Bool_t fClusterDeconv; //do cluster deconv
+ Float_t fXYClusterError; //Cluster error
+ Float_t fZClusterError; //Cluster error
+
void WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
- Int_t slice,Int_t patch);
+ Int_t slice,Int_t patch) const;
+ Int_t WriteTracks(char *filename,AliL3Merger *merger,char opt='o') const;
void WriteResults();
- Int_t WriteTracks(char *filename,AliL3Merger *merger,char opt='o');
- Float_t fEta[2];
- Bool_t fDoRoi;
- Bool_t fUseBinary;
- Bool_t fWriteOut;
+ void FitGlobalTracks();
void SetPath(char *p){sprintf(fPath,"%s",p);}
+
public:
AliLevel3 ();
- AliLevel3(Char_t *infile,Char_t *outfile);
- AliLevel3(TFile *in, TFile *out);
+ AliLevel3(Char_t *infile);
+#ifdef use_newio
+ AliLevel3(AliRunLoader *rl);
+#endif
virtual ~AliLevel3();
-
+ enum EFileType {kBinary, kBinary8, kRoot, kRaw, kDate, kRunLoader};
+ void Init(Char_t *path,EFileType filetype=kBinary,Int_t npatches=6);
+ void SetMergerParameters(Double_t maxy=1.2,Double_t maxz=1.6,Double_t maxkappa=0.003,
+ Double_t maxpsi=0.02,Double_t maxtgl=0.03);
void SetTrackerParam(Int_t phi_segments=50,Int_t eta_segments=100,
Int_t trackletlength=3,Int_t tracklength=5,
Int_t rowscopetracklet=2,Int_t rowscopetrack=3,
Double_t min_pt_fit=0,Double_t maxangle=1.31,
Double_t goodDist=5,Double_t hitChi2Cut=10,
Double_t goodHitChi2=20,Double_t trackChi2Cut=50,
- Int_t maxdist=50);
-
+ Int_t maxdist=50,Double_t maxphi=0.1,Double_t maxeta=0.1,
+ Bool_t vertexconstraint=kTRUE);
+ void SetClusterFinderParam(Float_t fXYError=0.2,Float_t fZError=0.3,Bool_t deconv=kTRUE);
- void ProcessEvent(Int_t first,Int_t last);
+ void ProcessEvent(Int_t first,Int_t last,Int_t event=0);
void ProcessSlice(Int_t slice);
-
- void UseBinaryInput(char *path){SetPath(path);fUseBinary=kTRUE;}
void DoMc(char* file="point_mc.dat");
+ void DoNonVertexTracking() {fDoNonVertex=kTRUE;}
+ void FindVertex() {fFindVertex=kTRUE;}
void DoBench(char* name="benchmark");
+ void DoPileup() {fPileUp = kTRUE;}
+ void NoCF() {fNoCF=kTRUE;}
void DoRoi(Float_t e0=0.4,Float_t e1=0.5){fEta[0]=e0;fEta[1]=e1;fDoRoi=kTRUE;}
- void WriteFiles(){fWriteOut = kTRUE;}
+ void WriteFiles(Char_t *path="./"){fWriteOut = kTRUE; sprintf(fWriteOutPath,"%s",path);}
+
+ static void SetVertexFit(Bool_t f) {fgDoVertexFit=f;}
+ static Bool_t DoVertexFit() {return fgDoVertexFit;}
+
ClassDef(AliLevel3,1) //Interface class for Level3-tracking
};
#endif
+
+
+
+
+