#include <TString.h>
#include "AliPlaneEff.h"
-#include "AliLog.h"
class AliITSsegmentation;
class TF1;
class AliITSgeom;
+class AliLog;
////////////////////////////////////////////////////
// //
fHisClusErrX(0),
fHisClusErrZ(0){
for (UInt_t i=0; i<kNModule*kNChip*kNWing*kNSubWing; i++){
+ // default constructor
fFound[i]=0;
fTried[i]=0;
}
- // default constructor
AliDebug(1,Form("Calling default constructor"));
}
//______________________________________________________________________
}
//_____________________________________________________________________________
Bool_t AliITSPlaneEffSDD::AddFromCDB(AliCDBId *cdbId) {
+// read efficiency values from CDB
AliCDBEntry *cdbEntry=0;
if (!cdbId) {
if(!fInitCDBCalled)
}
//__________________________________________________________
void AliITSPlaneEffSDD::DeleteHistos() {
+ // delete the histograms and clean the memory
if(fHisResX) {
for (Int_t i=0; i<kNHisto; i++ ) delete fHisResX[i];
delete [] fHisResX; fHisResX=0;
#include <TH2I.h>
#include <TProfile.h>
#include "AliITSPlaneEff.h"
-#include "AliCDBId.h"
+
+class AliCDBId;
///////////////////////////////////////////
// //
fHisClusErrX(0),
fHisClusErrZ(0){
for (UInt_t i=0; i<kNModule*kNChip; i++){
+ //
+ // default constructor
+ //
fFound[i]=0;
fTried[i]=0;
}
- // default constructor
AliDebug(1,Form("Calling default constructor"));
}
//______________________________________________________________________
//_____________________________________________________________________________
Bool_t AliITSPlaneEffSPD::AddFromCDB(AliCDBId *cdbId) {
AliCDBEntry *cdbEntry=0;
+// read efficiency values from CDB
if (!cdbId) {
if(!fInitCDBCalled)
{AliError("ReadFromCDB: CDB not inizialized. Call InitCDB first"); return kFALSE;}
}
//__________________________________________________________
void AliITSPlaneEffSPD::DeleteHistos() {
+// Delete the histograms and clean the memory
if(fHisResX) {
for (Int_t i=0; i<kNHisto; i++ ) delete fHisResX[i];
delete [] fHisResX; fHisResX=0;
#include <TH2I.h>
#include <TProfile.h>
#include "AliITSPlaneEff.h"
-#include "AliCDBId.h"
+
+class AliCDBId;
///////////////////////////////////////////
// //
fHisClusErrX(0),
fHisClusErrZ(0){
for (UInt_t i=0; i<kNModule; i++){
+ // default constructor
fFound[i]=0;
fTried[i]=0;
}
- // default constructor
AliDebug(1,Form("Calling default constructor"));
}
//______________________________________________________________________
}
//_____________________________________________________________________________
Bool_t AliITSPlaneEffSSD::AddFromCDB(AliCDBId *cdbId) {
+// Read (actually add the statistics) plane eff. from Data Base
AliCDBEntry *cdbEntry=0;
if (!cdbId) {
if(!fInitCDBCalled)
}
//__________________________________________________________
void AliITSPlaneEffSSD::DeleteHistos() {
+// Delete histograms and remove them from memory
if(fHisResX) {
for (Int_t i=0; i<kNHisto; i++ ) delete fHisResX[i];
delete [] fHisResX; fHisResX=0;
#include <TH1F.h>
#include <TH2I.h>
#include "AliITSPlaneEff.h"
-#include "AliCDBId.h"
+
+class AliCDBId;
///////////////////////////////////////////
// //
{
// default constructor
// from AliITSMultReconstructor
+ Init();
+}
+//______________________________________________________________________
+void AliITSTrackleterSPDEff::Init() {
SetPhiWindowL2();
SetZetaWindowL2();
SetOnlyOneTrackletPerC2();
AliDebug(1,Form(("Eff. of method FindChip for Cluster on lay 2 = %d / %d"),nfClu2,ntClu2));
}
//____________________________________________________________________
-Bool_t AliITSTrackleterSPDEff::FindChip(UInt_t &key, Int_t layer, Float_t* vtx,
+Bool_t AliITSTrackleterSPDEff::FindChip(UInt_t &key, Int_t layer,const Float_t* vtx,
Float_t thetaVtx, Float_t phiVtx, Float_t zVtx) {
//
// Input: a) layer number in the range [0,1]
return kTRUE;
}
//___________________________________________________________
-Bool_t AliITSTrackleterSPDEff::SetAngleRange02Pi(Double_t &angle) {
+Bool_t AliITSTrackleterSPDEff::SetAngleRange02Pi(Double_t &angle) const {
//
// simple method to reduce all angles (in rad)
// in range [0,2pi[
}
//_______________________________________________________________
Bool_t AliITSTrackleterSPDEff::IsReconstructableAt(Int_t layer,Int_t iC,Int_t ipart,
- Float_t* vtx, AliStack *stack, TTree *ref) {
+ const Float_t* vtx, const AliStack *stack, TTree *ref) {
// This (private) method can be used only for MC events, where both AliStack and the TrackReference
// are available.
// It is used to asses whether a tracklet prediction is reconstructable or not at the other layer
fPlaneEffBkg=0;
}
}
-
+//______________________________________________________________
+void AliITSTrackleterSPDEff::SetReflectClusterAroundZAxisForLayer(Int_t ilayer,Bool_t b){
+//
+// method to study residual background:
+// Input b= KTRUE --> reflect the clusters
+// ilayer (either 0 or 1) --> which SPD layers should be reflected
+//
+ 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
+ }
class TTree;
class TH1F;
class TH2F;
+class AliPlaneEff;
+
#include "AliTracker.h"
#include "AliITSPlaneEffSPD.h"
-#include "AliPlaneEff.h"
class AliITSTrackleterSPDEff : public AliTracker
{
// 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.)
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);
// 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();