]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliAnalysisTaskQASym.h
Quick fix for bug 71658
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.h
index ad04b363de53c427e873e50a9e1d27df1bd66460..b06e308df7e890fc955c38d3b9d456258723402c 100644 (file)
@@ -1,20 +1,14 @@
+// Analysis task for basic QA exploiting symmetries
+//of global, TPC, and ITS tracks
+
 #ifndef ALIANALYSISTASKQASYM_H
 #define ALIANALYSISTASKQASYM_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id:$ */
  
-//------------------------------
-// Analysis task for quality-assurance of central tracking
-// mainly based on fundamental symmetries 
-//
-// eva.sicking@cern.ch
 
 class TH1F;
 class TH2F;
+class TH3F;
 class TList;
-class TNtuple;
 
 class AliESDEvent;
 class AliESDtrack;
@@ -22,28 +16,31 @@ class AliESDtrackCuts;
 
 
 #include "AliAnalysisTaskSE.h"
+#include "TFile.h"
 
 class AliAnalysisTaskQASym : public AliAnalysisTaskSE {
  public:
-    AliAnalysisTaskQASym();
-    AliAnalysisTaskQASym(const char *name);
-    virtual ~AliAnalysisTaskQASym() {}
+  AliAnalysisTaskQASym(const char *name = "AliAnalysisTaskQASym");
+  virtual ~AliAnalysisTaskQASym() {}
   
-    virtual void   UserCreateOutputObjects();
-    virtual void   UserExec(Option_t *option);
-    virtual void   Terminate(Option_t *);
-    
-    
+  virtual void   UserCreateOutputObjects();
+  virtual void   UserExec(Option_t *option);
+  virtual void   Terminate(Option_t *);
+  virtual void   SetTrackType(Int_t type) {fTrackType = type;}  
+  virtual void   SetStandAloneTrack(Bool_t standAlone = kFALSE) {fStandAlone = standAlone;}  //needed for ITS tracks
   
-    virtual void   SetCuts(AliESDtrackCuts* cuts)
-       {fCuts = cuts;}
-    
-    virtual void   SetFieldOn(Bool_t b = kTRUE){fFieldOn = b;} 
+  
+  virtual void   SetCuts(AliESDtrackCuts* cuts)
+     {fCuts = cuts;}
+
+  virtual void   SetFieldOn(Bool_t b = kTRUE){fFieldOn = b;} 
+
   
  private:
 
-  Bool_t      fFieldOn;         // field flag
+  Int_t       fTrackType;       // track type
+  Int_t       fStandAlone;      // needed for ITS tracks
+  Bool_t      fFieldOn;         // field status
 
   TList       *fHists;          // List of histos
 
@@ -54,88 +51,155 @@ class AliAnalysisTaskQASym : public AliAnalysisTaskSE {
   TH1F        *fEtaPt;          // eta over pt 
   TH1F        *fQPt;            // charge over pt 
   TH1F        *fDca;            // distance of closest approach
-  TH1F        *fqPtRec[7];      // charge over pt divided for ITS layer cases
   TH1F        *fqRec;           // reconstrcuted charge
-  TH1F        *fsigmaPt;        // sigma_pT
-  TH2F        *fDcaSigmaPos[7]; // distance of closest approach against sigma_pT
-  TH2F        *fDcaSigmaNeg[7]; // distance of closest approach against sigma_pT
-
-
-  //positive und negative particles
-  TH1F        *fRecPtPos;      // pt of pos partice
-  TH1F        *fRecPtNeg;      // pt of neg particle
-  TH1F        *fRecPhiPos;     // phi of pos. particle
-  TH1F        *fRecPhiNeg;     // phi of neg. particle
-  TH1F        *fRecEtaPos;     // eta of neg. particle
-  TH1F        *fRecEtaNeg;     // eta of neg. particle
-  TH1F        *fRecEtaPtPos;   // eta over pt of neg. particle
-  TH1F        *fRecEtaPtNeg;   // eta over pt of neg. particle
-  TH1F        *fRecDcaPos;     // distance of closest approach of neg. particle
-  TH1F        *fRecDcaNeg;     // distance of closest of neg. particle
-  TH1F        *fRecDcaNegInv;  // invers dca of neg. particle
-  TH1F        *fRecDPos;       // impact parameter of neg. particle
-  TH1F        *fRecDNeg;       // impact parameter of neg. particle
+  TH1F        *fSigmaPtHist;    // sigma_pT
+
+   //positive und negative tracks
+  TH1F        *fRecPtPos;      // pt of pos tracks
+  TH1F        *fRecPtNeg;      // pt of neg tracks
+  TH1F        *fRecPhiPos;     // phi of pos. tracks
+  TH1F        *fRecPhiNeg;     // phi of neg. tracks
+  TH1F        *fRecEtaPos;     // eta of neg. tracks
+  TH1F        *fRecEtaNeg;     // eta of neg. tracks
+  TH1F        *fRecEtaPtPos;   // eta over pt of neg. tracks
+  TH1F        *fRecEtaPtNeg;   // eta over pt of neg. tracks
+  TH1F        *fRecDcaPos;     // distance of closest approach of neg. tracks
+  TH1F        *fRecDcaNeg;     // distance of closest of neg. tracks
+  TH1F        *fRecDcaNegInv;  // invers dca of neg. tracks
+  TH1F        *fRecDPos;       // impact parameter of neg. tracks
+  TH1F        *fRecDNeg;       // impact parameter of neg. tracks
 
   // two sides of TPC -> Eta/Theta
-  TH1F        *fRecQPtPosEta;  // Q x Pt for pos. eta
-  TH1F        *fRecQPtNegEta;  // Q x Pt for neg. eta
-  TH1F        *fRecPtPosEta;   //     Pt for pos. eta
-  TH1F        *fRecPtNegEta;   //     Pt for neg. eta
-  TH1F        *fRecPhiPosEta;  // phi for pos. eta
-  TH1F        *fRecPhiNegEta;  // phi for neg. eta 
-  TH1F        *fRecDcaPosEta;  // dca for pos. eta 
-  TH1F        *fRecDcaNegEta;  // dca for neg. eta
-  TH1F        *fRecDPosEta;    // d   for pos. eta
-  TH1F        *fRecDNegEta;    // d   for neg. eta
-
-  // sectors of TPC (with pt>xGeV?), TODO: extent to TPC standalone tracks
-  TH1F        *fRecPtTpcSector[18];      // pt per sector
-  TH1F        *fRecEtaTpcSector[18];     // eta per sector
-  TH1F        *fRecQPtTpcSector[18];     // Qxpt per sector
-  TH1F        *fRecEtaPtTpcSector[18];   // eta x pt per sector
-  TH1F        *fSignedDcaTpcSector[18];  // dca per sector
+  TH1F        *fRecQPtPosEta;   //charge/pT for pos. eta
+  TH1F        *fRecQPtNegEta;   //charge/pT for neg. eta
+  TH1F        *fRecPtPosEta;    //pT        for pos. eta
+  TH1F        *fRecPtNegEta;    //pT        for neg. eta
+  TH1F        *fRecPhiPosEta;   //phi       for pos. eta
+  TH1F        *fRecPhiNegEta;   //phi       for neg. eta
+  TH1F        *fRecDcaPosEta;   //dca       for pos. eta
+  TH1F        *fRecDcaNegEta;   //dca       for neg. eta
+  TH1F        *fRecDPosEta;     //d         for pos. eta
+  TH1F        *fRecDNegEta;     //d         for neg. eta
+
+  // 2D: all measures as function of z of first trackpoint 
+  TH2F        *fRecPtPosVz;     //pt-zfirst of pos tracks
+  TH2F        *fRecPtNegVz;     //pt-zfirst of neg tracks
+  TH2F        *fRecEtaPosVz;    //eta-zfirst of pos tracks
+  TH2F        *fRecEtaNegVz;    //eta-zfirst of neg tracks
+  TH2F        *fRecPhiPosVz;    //phi-zfirst of pos tracks
+  TH2F        *fRecPhiNegVz;    //phi-zfirst of neg tracks
+  TH2F        *fSignedDcaPosVz; //dca-zfirst of pos tracks
+  TH2F        *fSignedDcaNegVz; //dca-zfirst of neg tracks
+  TH2F        *fRecQPtPosEtaVz; //charge/pT-zfirst of pos tracks
+  TH2F        *fRecQPtNegEtaVz; //charge/pT-zfirst of neg tracks
+  TH2F        *fRecEtaPtPosVz;  //eta/pT-zfirst of pos tracks
+  TH2F        *fRecEtaPtNegVz;  //eta/pT-zfirst of neg tracks
 
-  // 7 different case of hit in ITS ladders
-  TH1F        *fSignDcaPos[7];           // dca for pos. charge       
-  TH1F        *fSignDcaNeg[7];           // dca for neg. charge
-  TH1F        *fSignDcaNegInv[7];        // dca for neg. charge
-  TH1F        *fPtSigmaPos[7];           // sigma pt for pos. charge
-  TH1F        *fPtSigmaNeg[7];           // sigma pt for neg. charge
-  TH1F        *fRecPtPosLadder[7];       // pt for pos. charge
-  TH1F        *fRecPtNegLadder[7];       // pt for neg. charge
-  TH1F        *fRecPhiPosLadder[7];      // phi for pos. charge
-  TH1F        *fRecPhiNegLadder[7];      // phi for neg. charge
-  TH1F        *fRecEtaPosLadder[7];      // eta for pos. charge
-  TH1F        *fRecEtaNegLadder[7];      // eta for neg. charge
-
-  // 2D: all measures as function of z of vertex
-  TH2F        *fRecPtPosVz;              // pt for pos. charge
-  TH2F        *fRecPtNegVz;              // pt for neg. charge
-  TH2F        *fRecEtaPosVz;             // eta for pos. charge
-  TH2F        *fRecEtaNegVz;             // eta for neg. charge
-  TH2F        *fRecPhiPosVz;             // phi for pos. charge
-  TH2F        *fRecPhiNegVz;             // phi for neg. charge
-  TH2F        *fSignedDcaPosVz;          // dca for pos. charge
-  TH2F        *fSignedDcaNegVz;          // dca for neg. charge
-  TH2F        *fRecQPtPosEtaVz;          // qxpt for pos. charge
-  TH2F        *fRecQPtNegEtaVz;          // qxpt for neg. charge
-  TH2F        *fRecEtaPtPosVz;           // etaxpt for pos. charge
-  TH2F        *fRecEtaPtNegVz;           // etaxpt for neg. charge
 
   //high
-  TH1F * fDeltaPhiAll;                   // dphi
-  TH2F * fDeltaPhiLeading;               // dphi rel. to leading
-  TH1F * fDiffDcaD;                      // delta dca
+  TH1F * fDeltaPhiAll;         // phiLeaingTracks-phiOthers
+  TH2F * fDeltaPhiLeading;     // phiLeaingTracks-phiOthers vs. phiLeading
+  TH1F * fDiffDcaD;            // d-dca
 
   //sim
-  TH1F * fPhiRec;                        // phi
-  TH1F * fThetaRec;                      // theta
-  TH1F * fNumber;                        // n
-  TH1F * fVx;                            // vx
-  TH1F * fVy;                            // vy
-  TH1F * fVz;                            // vz
-
-  AliESDtrackCuts* fCuts;                // List of cuts
+  TH1F * fPhiRec;              //phi
+  TH1F * fThetaRec;            //theta
+  TH1F * fNumber;              //Number of tracks per event
+  TH1F * fNumberAfterCut;      //Number of tracks per event after cuts
+  TH1F * fVx;                  // x of first track point
+  TH1F * fVy;                  // y of first track point
+  TH1F * fVz;                  // z of first track point
+  TH1F * fVertexX;             // x of vertex
+  TH1F * fVertexY;             // y of vertex
+  TH1F * fVertexZ;             // z of vertex
+  TH1F * fNVertexSPD;          //number of vertices SPD
+  TH1F * fNVertexTracks;       //number of vertices of Tracks
+
+  //new
+  TH2F        *fRecDcaPosPhi;     //dca-phi for pos.
+  TH2F        *fRecDcaNegPhi;     //dca-phi for neg.
+  TH2F        *fRecPtPosPhi;      //pt-phi for pos.
+  TH2F        *fRecPtNegPhi;      //pt-phi for neg.
+  TH2F        *fRecEtaPosPhi;     //eta-phi for pos.
+  TH2F        *fRecEtaNegPhi;     //eta-phi for neg.
+  TH2F        *fRecQPtPhi;        //charge/pt-phi
+  TH2F        *fRecEtaPtPosPhi;   //eta/pt-phi for neg.
+  TH2F        *fRecEtaPtNegPhi;   //eta/pt-phi for pos.
+
+  TH1F        *fRecPtPosEtaPos;   //pt for pos tracks and pos eta
+  TH1F        *fRecPtNegEtaPos;   //pt for neg tracks and pos eta
+  TH1F        *fRecPtPosEtaNeg;   //pt for pos tracks and neg eta
+  TH1F        *fRecPtNegEtaNeg;   //pt for neg tracks and neg eta
+
+  TH1F        *fRec1PtPosEtaPos;   //1/pt for pos tracks and pos eta
+  TH1F        *fRec1PtNegEtaPos;   //1/pt for neg tracks and pos eta
+  TH1F        *fRec1PtPosEtaNeg;   //1/pt for pos tracks and neg eta
+  TH1F        *fRec1PtNegEtaNeg;   //1/pt for neg tracks and neg eta
+
+  TH1F        *fRecPhiPosEtaPos;   //phi for pos tracks and pos eta
+  TH1F        *fRecPhiNegEtaPos;   //phi for neg tracks and pos eta
+  TH1F        *fRecPhiPosEtaNeg;   //phi for pos tracks and neg eta
+  TH1F        *fRecPhiNegEtaNeg;   //phi for neg tracks and neg eta
+
+  TH2F        *fRecDcaPosPhiEtaPos;  //dca-phi for pos tracks and pos eta
+  TH2F        *fRecDcaNegPhiEtaPos;  //dca-phi for neg tracks and pos eta
+  TH2F        *fRecDcaPosPhiEtaNeg;  //dca-phi for pos tracks and neg eta
+  TH2F        *fRecDcaNegPhiEtaNeg;  //dca-phi for neg tracks and neg eta
+
+  TH2F        *fRecDcaPosPtEtaPos;  //dca-pt for pos tracks and pos eta
+  TH2F        *fRecDcaNegPtEtaPos;  //dca-pt for neg tracks and pos eta
+  TH2F        *fRecDcaPosPtEtaNeg;  //dca-pt for pos tracks and neg eta
+  TH2F        *fRecDcaNegPtEtaNeg;  //dca-pt for neg tracks and neg eta
+
+  TH2F        *fRecPtPosPhiEtaPos;  //pt-phi for pos tracks and pos eta
+  TH2F        *fRecPtNegPhiEtaPos;  //pt-phi for neg tracks and pos eta 
+  TH2F        *fRecPtPosPhiEtaNeg;  //pt-phi for pos tracks and neg eta
+  TH2F        *fRecPtNegPhiEtaNeg;  //pt-phi for neg tracks and neg eta
+
+  //  TH3F        *fRecDcaPhiPtPosEtaPos; //dca-pt-phi for pos tracks and pos eta
+  //  TH3F        *fRecDcaPhiPtNegEtaPos; //dca-pt-phi for neg tracks and pos eta
+  //  TH3F        *fRecDcaPhiPtPosEtaNeg; //dca-pt-phi for pos tracks and neg eta
+  //  TH3F        *fRecDcaPhiPtNegEtaNeg; //dca-pt-phi for neg tracks and neg eta
+
+  TH2F        *fEtavPt;                 // eta vs pt 
+  TH2F        *fPhivPt;                 // phi vs pt 
+
+  TH2F        *fCompareTPCparam;        // TPC param
+
+  TH1F        *fITSlayer;               // ITS layer
+  TH2F        *fITSlayerEta;            // ITS layer vs eta
+  TH2F        *fITSlayerPhi;            // ITS layer vs phi
+
+  AliESDtrackCuts* fCuts;               // List of cuts
+
+  // sectors of TPC 
+  TH1F        *fRecPtTpcSector[18];     //pt for TPC sectors
+  TH1F        *fRecEtaTpcSector[18];    //eta for TPC sectors
+  TH1F        *fRecQPtTpcSector[18];    //charge/pt for TPC sectors
+  TH1F        *fRecEtaPtTpcSector[18];  //eta/pt for TPC sectors
+  TH1F        *fSignedDcaTpcSector[18]; //dca for TPC sectors
+
+
+  // 7 different case of hit in ITS ladders
+  TH1F        *fRecPtPosLadder[7];  //pt for pos tracks
+  TH1F        *fRecPtNegLadder[7];  //pt for neg tracks
+  TH1F        *fRecPhiPosLadder[7]; //phi for pos tracks
+  TH1F        *fRecPhiNegLadder[7]; //phi for neg tracks
+  TH1F        *fRecEtaPosLadder[7]; //eta for pos tracks
+  TH1F        *fRecEtaNegLadder[7]; //eta for neg tracks
+  TH1F        *fSignDcaPos[7];      //dca for pos tracks
+  TH1F        *fSignDcaNeg[7];      //dca for neg tracks
+  TH1F        *fSignDcaNegInv[7];   //-dca for neg tracks
+  TH1F        *fPtSigmaPos[7];      //sigma_pT for pos tracks
+  TH1F        *fPtSigmaNeg[7];      //sigma_pT for neg tracks
+  TH1F        *fqPtRec[7];          // charge/pt 
+  TH2F        *fDcaSigmaPos[7];     // dca - sigma_pT for pos tracks
+  TH2F        *fDcaSigmaNeg[7];     // dca - sigma_pT for neg tracks
+
+  
+  
+
+
   AliAnalysisTaskQASym(const AliAnalysisTaskQASym&); // not implemented
   AliAnalysisTaskQASym& operator=(const AliAnalysisTaskQASym&); // not implemented