]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/src/AliL3Evaluate.h
Copy constructor and assignment operator are added
[u/mrichter/AliRoot.git] / HLT / src / AliL3Evaluate.h
index 5266292e0b2899f4d3615824221d8264ddba3613..d890bd5f30b8faaac925cf31d0ee75f5feff6f79 100644 (file)
@@ -1,23 +1,8 @@
+// @(#) $Id$
+
 #ifndef ALIL3_Evaluate
 #define ALIL3_Evaluate
 
-#include <TObject.h>
-#include <TH1.h>
-#include <TTree.h>
-#include <TNtuple.h>
-#include "AliSimDigits.h"
-
-
-struct GoodTrack 
-{
-
-  Int_t label;
-  Int_t code;
-  Double_t px,py,pz;
-  Double_t pt;
-};
-typedef struct GoodTrack GoodTrack;
-
 
 class AliL3Track;
 class TClonesArray;
@@ -25,97 +10,116 @@ class TFile;
 class AliL3TrackArray;
 class AliL3SpacePointData;
 class TH1F;
-class AliL3Transform;
 class AliTPCParam;
 class TTree;
 class AliSimDigits;
 class TObjArray;
 class TParticle;
+class AliL3FileHandler;
+class TClonesArray;
+class TNtuple;
+class TH1F;
+//#include <TNtuple.h>
+//#include <TH1F.h>
 
-class AliL3Evaluate : public TObject {
+class AliL3Evaluate {
+
+struct AliGoodTrack 
+{
+  Int_t flabel;  //label
+  Double_t feta; //eta
+  Int_t fcode;   //pcode
+  Double_t fpx,fpy,fpz; //momentum
+  Double_t fx,fy,fz;    //pos at entrance 
+  Int_t fnhits;  //nhits
+  Int_t fsector; //sector number
+};
+typedef struct AliGoodTrack AliGoodTrack;
+
+struct AliS 
+{
+  Int_t flab; //lab
+  Int_t fmax; //max
+};
+typedef struct AliS AliS;
 
  private:
 
-  TFile *fDigitsFile;
-  TFile *fMCclusterfile;  //If you run the fast simulator.
-  TFile *fEventFile;
-  GoodTrack fGoodTracks[15000]; //!
-  TObjArray *fParticles;
   AliL3TrackArray *fTracks; //!
-  AliTPCParam *fParam;
-  AliL3SpacePointData *fClusters[36][5]; //!
-  AliL3Transform *fTransform; //!
-  AliSimDigits *fDigits;
-  TTree *fDigitsTree;
-  Int_t fMinSlice;
-  Int_t fMaxSlice;
-  UInt_t fNcl[36][5];
-  Int_t fRowid[36][176];
-  Int_t fMinPointsOnTrack;  //Minimum points on track to be considered.
-  Bool_t fIsSlow;
-  Bool_t fNoOverlap;
-  Int_t fNFastPoints;
+  AliL3SpacePointData *fClusters[36][6]; //!
+  AliL3FileHandler *fClustersFile[36][6]; //!
+  Char_t fPath[1024];      //path
+  Int_t fMinSlice;         //min slice
+  Int_t fMaxSlice;         //max slice
+  UInt_t fNcl[36][6];      //cluster numbers
+  Int_t fRowid[36][176];   //row ids
+  Int_t fMinPointsOnTrack;    //minimum points on track to be considered.
+  Int_t fMinHitsFromParticle; //minimums hits a particle has to create
+  AliGoodTrack *fGoodTracks; //!
+  Float_t fMaxFalseClusters;  //maximum number of false assigned clusters
+  
+  Int_t fNFastPoints; //fast access to points
   UInt_t *fMcIndex;//!
   Int_t *fMcId;//!
-  Int_t fGoodFound;
-  Int_t fGoodGen;
-  Double_t fMinGoodPt;
-
-  //Histograms
-  TNtuple *fNtuppel;
-  TH1F *fPtRes;
-  TH1F *fNGoodTracksPt;
-  TH1F *fNFoundTracksPt;
-  TH1F *fNFakeTracksPt;
-  TH1F *fTrackEffPt;
-  TH1F *fFakeTrackEffPt;
-  TH1F *fNGoodTracksEta;
-  TH1F *fNFoundTracksEta;
-  TH1F *fNFakeTracksEta;
-  TH1F *fTrackEffEta;
-  TH1F *fFakeTrackEffEta;
+  Int_t fGoodFound;    //good found
+  Int_t fGoodGen;      //good generated found
+  Double_t fMinGoodPt; //min pt
+  Double_t fMaxGoodPt; //max pt
   
-  void FillEffHistos();
-  void CalcEffHistos();
-  void AssignIDs();
-  Bool_t InitMC();
-  void DefineGoodTracks(Int_t *slice,Int_t *padrow,Int_t good_number);
-  Int_t GetMCTrackLabel(AliL3Track *track);
-  Int_t **GetClusterIDs(AliL3Track *track);
-  void GetFastClusterIDs(Char_t *path);
+  //Histograms
+  TNtuple *fNtuppel;//!
+  TH1F *fPtRes;//!
+  TH1F *fNGoodTracksPt;//!
+  TH1F *fNFoundTracksPt;//!
+  TH1F *fNFakeTracksPt;//!
+  TH1F *fTrackEffPt;//!
+  TH1F *fFakeTrackEffPt;//!
+  TH1F *fNGoodTracksEta;//!
+  TH1F *fNFoundTracksEta;//!
+  TH1F *fNFakeTracksEta;//!
+  TH1F *fTrackEffEta;//!
+  TH1F *fFakeTrackEffEta;//!
+  TNtuple *fNtupleRes;//!
+  Bool_t fStandardComparison; // take standard macro
   
+  void Clear();
  public:
   AliL3Evaluate();
-  AliL3Evaluate(Char_t *mcfile,Char_t *digitsfile,Int_t *slice);
-  AliL3Evaluate(Int_t *slice);
-
+  AliL3Evaluate(Char_t *path,Int_t min_clusters,Int_t minhits,Double_t minpt=0.1,Double_t maxpt=4.,Int_t *slice=0);
   virtual ~AliL3Evaluate();
-
-  void SetupFast(Char_t *trackfile,Char_t *mcClusterfile,Char_t *path=".");
-  void SetupSlow(Char_t *trackfile,Char_t *path=".");
-  void Setup(Char_t *trackfile,Char_t *path);
-  void CreateHistos(Int_t nbin=20,Int_t xlow=0,Int_t xup=4);
-  void EvaluatePatch(Int_t slice,Int_t patch,Int_t min_points,Int_t good_number);
-  void EvaluateSlice(Int_t slice,Int_t min_points,Int_t good_number);
-  void EvaluateGlobal(Int_t min_points,Int_t good_number);
+  
+  void LoadData(Int_t event=-1,Bool_t sp=kFALSE);
+  void CreateHistos(Int_t nbin=20,Float_t xlow=0,Float_t xup=4);
   void Write2File(Char_t *outputfile);
-    
+  void FillEffHistos();
+  void FillEffHistosNAIVE();
+  void CalcEffHistos();
+  void AssignPIDs();
+  void AssignIDs();
+  void GetGoodParticles(Char_t *particlefile,Int_t event=-1,Int_t *padrowrange=0);
+  void GetFastClusterIDs(Char_t *path);
+  void GetCFeff(Char_t *path,Char_t *outfile,Int_t nevent=0,Bool_t sp=kFALSE);
+  Int_t GetMCTrackLabel(AliL3Track *track);
+  Float_t GetTrackPID(AliL3Track *track);
+  void CalculateResiduals();
+  void EvaluatePoints(Char_t *rootfile,Char_t *exactfile,Char_t *tofile,Int_t nevent=1,Bool_t offline=kFALSE,Bool_t sp=kFALSE);
+  Float_t GetCrossingAngle(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz);
+  Int_t FindPrimaries(Int_t nparticles);
+  void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;}
+  void SetMinGoodPt(Double_t f) {fMinGoodPt = f;}
+  void SetMaxFalseClusters(Float_t f) {fMaxFalseClusters = f;}
+  void SetStandardComparison(Bool_t b) {fStandardComparison = b;}  
+  TNtuple *GetNtuple();
+  Int_t GetNGoodTracks() const {return fGoodGen;}
+  Int_t GetNFoundTracks() const {return fGoodFound;}
   TH1F *GetTrackEffPt() {return fTrackEffPt;}
   TH1F *GetTrackEffEta() {return fTrackEffEta;}
+  TH1F *GetFakeEffEta() {return fFakeTrackEffEta;}
+  TH1F *GetFakeEffPt() {return fFakeTrackEffPt;}
   TH1F *GetPtRes() {return fPtRes;}
-
-  void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;}
-  void SetMinGoodPt(Double_t f) {fMinGoodPt = f;}
-  void DoSingleTracks() {fNoOverlap = kTRUE;}
-  Int_t GetNGoodTracks() {return fGoodGen;}
-  Int_t GetNFoundTracks() {return fGoodFound;}
+  AliL3TrackArray *GetTracks() {return fTracks;}
   
-  TNtuple *CalculateResiduals();
-  TNtuple *EvaluatePoints(Char_t *rootfile);
-  Bool_t GetParticleCrossingPoint(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz);
-  //TNtuple *EvaluateGEANT();
-
-  ClassDef(AliL3Evaluate,1) 
+  ClassDef(AliL3Evaluate,1) //Tracking evaluation class
 };
 
 #endif