X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSTrackleterSPDEff.h;h=22528866c4388f74d5016fa679da7bfb3f7a18db;hb=27199d8618d629130d491ccf8174503ef1aa08a4;hp=854f77f386577559b0afbb537e18a705cc062598;hpb=03ee962998189a7d88d2d1a4658107e2d617189f;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSTrackleterSPDEff.h b/ITS/AliITSTrackleterSPDEff.h index 854f77f3865..22528866c43 100644 --- a/ITS/AliITSTrackleterSPDEff.h +++ b/ITS/AliITSTrackleterSPDEff.h @@ -26,16 +26,17 @@ class AliStack; class TTree; class TH1F; class TH2F; +class AliPlaneEff; + #include "AliTracker.h" #include "AliITSPlaneEffSPD.h" -#include "AliPlaneEff.h" 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 +48,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 +66,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 +205,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 +254,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 +272,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 +290,4 @@ protected: ostream &operator<<(ostream &os,const AliITSTrackleterSPDEff &s); istream &operator>>(istream &is, AliITSTrackleterSPDEff &s); #endif +