]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSTrackleterSPDEff.h
coverity fix + missing comma in previous commit
[u/mrichter/AliRoot.git] / ITS / AliITSTrackleterSPDEff.h
index 854f77f386577559b0afbb537e18a705cc062598..e08d4f1362ce70b6e85ada5ba904de3aa641f1fd 100644 (file)
@@ -26,16 +26,19 @@ class AliStack;
 class TTree;
 class TH1F;
 class TH2F;
+class AliPlaneEff;
+
 #include "AliTracker.h"
 #include "AliITSPlaneEffSPD.h"
-#include "AliPlaneEff.h"
+
+using std::istream;
 
 class AliITSTrackleterSPDEff : public  AliTracker
 {
 public:
   AliITSTrackleterSPDEff();
   virtual ~AliITSTrackleterSPDEff();
-  Int_t Clusters2Tracks(AliESDEvent *);
+  Int_t Clusters2Tracks(AliESDEvent *esd);
   Int_t PostProcess(AliESDEvent *);
 
   virtual Int_t PropagateBack(AliESDEvent*) {return 0;}
@@ -47,13 +50,11 @@ public:
   // Main method to perform the trackleter and the SPD efficiency evaluation
   void Reconstruct(AliStack* pStack=0x0, TTree* tRef=0x0, Bool_t lbkg=kFALSE);
 
-  void SetReflectClusterAroundZAxisForLayer(Int_t ilayer,Bool_t b=kTRUE){  // method to study residual background:
-    if(b) {AliInfo(Form("All clusters on layer %d will be rotated by 180 deg around z",ilayer)); 
-           SetLightBkgStudyInParallel(kFALSE);}
-    if(ilayer==0) fReflectClusterAroundZAxisForLayer0=b;                   // a rotation by 180degree around the Z axis  
-    else if(ilayer==1) fReflectClusterAroundZAxisForLayer1=b;              // (x->-x; y->-y) to all RecPoints on a 
-    else AliInfo("Nothing done: input argument (ilayer) either 0 or 1");   // given layer is applied. In such a way 
-  }                                                                        // you remove all the true tracklets.
+  void SetReflectClusterAroundZAxisForLayer(Int_t ilayer,Bool_t b=kTRUE);  // method to study residual background:
+                                                                           // a rotation by 180degree around the Z axis  
+                                                                           // (x->-x; y->-y) to all RecPoints on a 
+                                                                           // given layer is applied. In such a way 
+                                                                           // you remove all the true tracklets.
   void SetLightBkgStudyInParallel(Bool_t b = kTRUE); // if you set this on, then the estimation of the 
                                                     // SPD efficiency is done as usual for data, but in 
                                                     // parallel a light (i.e. without control histograms, etc.) 
@@ -67,6 +68,7 @@ public:
   void SetPhiWindowL1(Float_t w=0.08) {fPhiWindowL1=w;}  // method to set the cuts in the interpolation
   void SetZetaWindowL1(Float_t w=1.) {fZetaWindowL1=w;}  // phase; use method of the base class for extrap.
   void SetOnlyOneTrackletPerC1(Bool_t b = kTRUE) {fOnlyOneTrackletPerC1 = b;} // as in the base class but 
+  void SetMinContVtx(Int_t min=3) {fMinContVtx=min;} // set minimum n. of contributors to vertex
 
   Int_t GetNClustersLayer1() const {return fNClustersLay1;}
   Int_t GetNClustersLayer2() const {return fNClustersLay2;}
@@ -205,6 +207,7 @@ protected:
   Float_t       fZetaWindowL1;    // SEarch window in zeta (Layer 1)
   Bool_t        fOnlyOneTrackletPerC1; // only one tracklet per cluster in L. 1
   Bool_t        fUpdateOncePerEventPlaneEff;  //  If this is kTRUE, then you can update the chip efficiency only once
+  Int_t                fMinContVtx;  // minimum number of contributors (tracklets) to the vertex for the event to be used 
                                               //  per event in that chip. This to avoid double counting from the
                                               //  same tracklets which has two rec-points on one layer.
   Bool_t*       fChipUpdatedInEvent;          //!  boolean (chip by chip) to flag which chip has been updated its efficiency
@@ -253,15 +256,16 @@ protected:
   TH2F**        fhClustersInModuleLay1; //! distribution of cluster in the module Lay 1 (sub-chip scale)
   TH2F**        fhClustersInModuleLay2; //! distribution of cluster in the module Lay 2 (sub-chip scale)
 //
+  void Init(); // initialize pointers and allocate memory 
   Double_t GetRLayer(Int_t layer); // return average radius of layer (0,1) from Geometry
   Bool_t PrimaryTrackChecker(Int_t ipart,AliStack* stack=0x0);  // check if a MC particle is primary (need AliStack)
   Int_t DecayingTrackChecker(Int_t ipart,AliStack* stack=0x0);  // For a primary particle, check if it is stable (see cxx)
 // check if a MC particle is reconstructable
-  Bool_t IsReconstructableAt(Int_t layer,Int_t iC,Int_t ipart,Float_t* vtx,AliStack* stack=0x0,TTree* ref=0x0);
+  Bool_t IsReconstructableAt(Int_t layer,Int_t iC,Int_t ipart,const Float_t* vtx,const AliStack* stack=0x0,TTree* ref=0x0);
   void InitPredictionMC(); // allocate memory for cuts and MC data memebers
   void DeletePredictionMC(); // deallocate memory
   // method to locate a chip using current vtx and polar coordinate od tracklet w.r.t. to vtx (zVtx may not be given)
-  Bool_t FindChip(UInt_t &key, Int_t layer,  Float_t* vtx, Float_t thetaVtx, Float_t phiVtx, Float_t zVtx=999.); 
+  Bool_t FindChip(UInt_t &key, Int_t layer,const Float_t* vtx, Float_t thetaVtx, Float_t phiVtx, Float_t zVtx=999.); 
   // method to transform from Global Cilindrical coordinate to local (module) Cartesian coordinate
   Bool_t FromGloCilToLocCart(Int_t ilayer,Int_t idet, Double_t r, Double_t phi, Double_t z,
                            Float_t &xloc, Float_t &zloc);
@@ -270,8 +274,8 @@ protected:
   // this method gives you the intersections between a line and a circle (centred in the origin) 
   // using polar coordinates
   Bool_t FindIntersectionPolar(Double_t vtx[2],Double_t phiVtx, Double_t R,Double_t &phi);
-  Bool_t SetAngleRange02Pi(Double_t &angle); // set the range of angle in [0,2pi[ 
-  Bool_t SetAngleRange02Pi(Float_t  &angle) 
+  Bool_t SetAngleRange02Pi(Double_t &angle) const; // set the range of angle in [0,2pi[ 
+  Bool_t SetAngleRange02Pi(Float_t  &angle) const 
   {Double_t tmp=(Double_t)angle; Bool_t ret=SetAngleRange02Pi(tmp);angle=(Float_t)tmp;return ret;};  
   void CallWarningMC() const {if(!fMC) AliWarning("You can use this method only for MC! Call SetMC() first");}
   Bool_t SaveHists();
@@ -288,3 +292,4 @@ protected:
 ostream &operator<<(ostream &os,const AliITSTrackleterSPDEff &s);
 istream &operator>>(istream &is, AliITSTrackleterSPDEff &s);
 #endif
+