]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDCalibTask.h
Linking with libOADB needed by libANALYSISalice
[u/mrichter/AliRoot.git] / TRD / AliTRDCalibTask.h
index e3a27d8b0318d183a40cd17d711dc29692c087ec..5c56ed2b8c6755f1db1d0d2d6d567fc67189f4de 100644 (file)
-#ifndef ALITRDCALIBTASK_H\r
-#define ALITRDCALIBTASK_H\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-//                                                                           //\r
-//  TRD calibration task for offline calibration                             //\r
-//                                                                           //\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-class TList;\r
-class TObject;\r
-class TObjArray;\r
-class TH2F;\r
-class TH1F;\r
-class TH1I;\r
-class TProfile2D;\r
-class TH2I;\r
-class TTree;\r
-class AliESDEvent;\r
-class AliESDfriend;\r
-class AliESDtrack;\r
-class AliESDfriendTrack;\r
-class AliTRDtrackV1;\r
-class AliTRDCalibraFillHisto;\r
-class AliTRDcluster;\r
-class AliESDtrackCuts;\r
-class AliTRDCalDet;\r
-\r
-#include "TObjString.h"\r
-#include "AliAnalysisTask.h" \r
-\r
-class AliTRDCalibTask : public AliAnalysisTask {\r
- public:\r
-  AliTRDCalibTask(const char *name = "AliTRDCalibTask");\r
-  virtual ~AliTRDCalibTask();\r
-  \r
-  virtual void   ConnectInputData(Option_t *);\r
-  virtual void   CreateOutputObjects();\r
-  virtual void   Exec(Option_t *option);\r
-  virtual void   Terminate(Option_t *);\r
-  virtual Bool_t Load(const Char_t *filename);\r
-  void           Plot();\r
-\r
-  void SetHisto2d(Bool_t histo2d)                                   {fHisto2d=histo2d;};\r
-  void SetVector2d(Bool_t vector2d)                                 {fVector2d=vector2d;};\r
-  void SetVdriftLinear(Bool_t vdriftLinear)                         {fVdriftLinear = vdriftLinear;};\r
-  void SetNbTimeBins(Int_t nbTimeBins)                              {fNbTimeBins=nbTimeBins;};  \r
-  \r
-  void SetNz(Short_t nz, Int_t i)                                      {fNz[i]=nz;};\r
-  void SetNrphi(Short_t nrphi, Int_t i)                                {fNrphi[i]=nrphi;};\r
-  \r
-  void AddSelectedTriggerClass(const char*name)                        {fSelectedTrigger->Add(new TObjString(name));};\r
-  void SetReject(Bool_t rejected)                                      {fRejected = rejected;};\r
-  \r
-  void SetESDtrackCuts(AliESDtrackCuts * const esdtrackCuts)                  {fEsdTrackCuts = esdtrackCuts;};\r
-  void SetRequirePrimaryVertex(Bool_t requirePrimaryVertex)            {fRequirePrimaryVertex = requirePrimaryVertex;};\r
-  void SetMinNbOfContributors(Int_t minNbOfContributors)               {fMinNbContributors = minNbOfContributors;};  \r
-  \r
-  void SetLow(Int_t low)                                               {fLow=low;};\r
-  void SetHigh(Int_t high)                                             {fHigh=high;};\r
-  void SetFillZero(Bool_t fillZero)                                    {fFillZero =  fillZero;};\r
-  void SetNormalizeNbOfCluster(Bool_t normalizeNbOfCluster =  kTRUE)   {fNormalizeNbOfCluster = normalizeNbOfCluster;};\r
-  void SetMaxCluster(Float_t maxCluster)                               {fMaxCluster =  maxCluster; }; \r
-  void SetNbMaxCluster(Short_t nbMaxCluster)                           {fNbMaxCluster =  nbMaxCluster; }; \r
-  void SetOfflineTracks()                                              {fOfflineTracks=kTRUE; fStandaloneTracks=kFALSE; };\r
-  void SetStandaloneTracks()                                           {fStandaloneTracks=kTRUE; fOfflineTracks=kFALSE; };\r
-\r
-  void SetCalDetGain(AliTRDCalDet * const calDetGain)                         {fCalDetGain = calDetGain;};  \r
-\r
-  void SetMaxEvent(Int_t nbevents)                                     { fMaxEvent = nbevents; };\r
-  void SetDebug(Int_t debug)                                           { fDebug = debug; };\r
-\r
- private:\r
-  AliESDEvent  *fESD;                            //! ESD object\r
-  AliESDfriend *fESDfriend;                      //! ESD friend\r
-  const AliESDtrack *fkEsdTrack;                  //! ESD track\r
-  AliESDfriendTrack *fFriendTrack;               //! ESD friend track\r
-  TObject *fCalibObject;                         //! calibration objects attached to the ESD friend\r
-  AliTRDtrackV1 *fTrdTrack;                      //! trdtrack\r
-  AliTRDcluster *fCl;                            //! cluster\r
-  \r
-  TList       *fListHist;                        //! list of histograms\r
-\r
-  AliTRDCalibraFillHisto *fTRDCalibraFillHisto;  //! calibration analyse object\r
-\r
-  TH1I        *fNEvents;                         //! counter  \r
-  \r
-  TH1F        *fNbTRDTrack;                      //! nb ESD tracks with TRD clusters\r
-  TH1F        *fNbTRDTrackOffline;               //! nb ESD tracks with TRD clusters\r
-  TH1F        *fNbTRDTrackStandalone;            //! nb ESD tracks with TRD clusters\r
-  TH2F        *fNbTPCTRDtrack;                   //! nb TPC and TRD tracks when problems\r
-   \r
-  TH1F        *fNbTimeBin;                       //! nb Time Bin\r
-  TH1F        *fNbTimeBinOffline;                //! nb Time Bin offline\r
-  TH1F        *fNbTimeBinStandalone;             //! nb Time Bin standalone\r
-  TH1F        *fNbClusters;                      //! nb Clusters\r
-  TH1F        *fNbClustersOffline;               //! nb Clusters offline\r
-  TH1F        *fNbClustersStandalone;            //! nb Clusters standalone\r
-  TH1F        *fNbTracklets;                     //! nb Tracklets\r
-  TH1F        *fNbTrackletsOffline;              //! nb Tracklets offline\r
-  TH1F        *fNbTrackletsStandalone;           //! nb Tracklets standalone\r
-  \r
-  TH2I        *fCH2dSum;                         //! CH2d charge all\r
-  TProfile2D  *fPH2dSum;                         //! PH2d PH all\r
-  TH2I        *fCH2dSM;                          //! CH2d per SM\r
-  TProfile2D  *fPH2dSM;                          //! PH2d per SM\r
-\r
-  Bool_t      fHisto2d;                          //! histo\r
-  Bool_t      fVector2d;                         //! vector\r
-  Bool_t      fVdriftLinear;                     //! vdrift Linear\r
-\r
-  Int_t       fNbTimeBins;                       //! number of timebins \r
-\r
-  Short_t     fNz[3];                            // Nz mode \r
-  Short_t     fNrphi[3];                         // Nrphi mode\r
-   \r
-  TObjArray   *fSelectedTrigger;                 // Trigger class names accepted/rejected\r
-  Bool_t      fRejected;                         // Reject the selected trigger class\r
-  \r
-  AliESDtrackCuts *fEsdTrackCuts;                // Quality cut on the AliESDtrack\r
-  Bool_t      fRequirePrimaryVertex;             // Primary Vertex\r
-  Int_t       fMinNbContributors;                // Min number of contributors\r
-  \r
-  Int_t       fLow;                              // lower limit of nb of TRD clusters per tracklet\r
-  Int_t       fHigh;                             // higher limit of nb of TRD clusters per tracklet\r
-  Bool_t      fFillZero;                         // fill zero\r
-  Bool_t      fNormalizeNbOfCluster;             // normalize with number of clusters (per default not) \r
-  Float_t     fRelativeScale;                    // relative scale for gas gain\r
-  Float_t     fMaxCluster;                       // Maxcluster \r
-  Short_t     fNbMaxCluster;                     // Number of tb at the end\r
-  Bool_t      fOfflineTracks;                    // Only Offline refitted tracks\r
-  Bool_t      fStandaloneTracks;                 // Take only standalone tracks\r
-\r
-  AliTRDCalDet *fCalDetGain;                     // Calib object gain\r
-\r
-  Int_t       fMaxEvent;                         // max events\r
-  Int_t       fCounter;                          // max events\r
-  Int_t       fDebug;                            //! fDebug\r
-\r
-  AliTRDCalibTask(const AliTRDCalibTask&); \r
-  AliTRDCalibTask& operator=(const AliTRDCalibTask&); \r
-\r
-  ClassDef(AliTRDCalibTask, 1); \r
-};\r
-\r
-#endif\r
+#ifndef ALITRDCALIBTASK_H
+#define ALITRDCALIBTASK_H
+
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+//  TRD calibration task for offline calibration                             //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+
+class TList;
+class TObject;
+class TObjArray;
+class TH2F;
+class TH1F;
+class TH1I;
+class TProfile2D;
+class TH2I;
+class TTree;
+class AliESDEvent;
+class AliESDfriend;
+class AliESDtrack;
+class AliESDfriendTrack;
+class AliTRDtrackV1;
+class AliTRDCalibraFillHisto;
+class AliTRDcluster;
+class AliESDtrackCuts;
+class AliTRDCalDet;
+
+#include "TObjString.h"
+#include "AliAnalysisTaskSE.h" 
+#include "TMath.h"
+
+class AliTRDCalibTask : public AliAnalysisTaskSE {
+ public:
+  AliTRDCalibTask(const char *name = "AliTRDCalibTask");
+  virtual ~AliTRDCalibTask();
+  
+  //  virtual void   ConnectInputData(Option_t *);
+  virtual void   UserCreateOutputObjects();
+  virtual void   UserExec(Option_t *);
+  virtual void   Terminate(Option_t *);
+  virtual Bool_t Load(const Char_t *filename);
+  virtual Bool_t Load(TList *lister);
+  void           Plot();
+  virtual Long64_t  Merge(TCollection *li);
+  void           AddTask(const AliTRDCalibTask * calibTask);
+  TList          *GetList() const {return fListHist;};
+
+  void SetHisto2d(Bool_t histo2d)                                   {fHisto2d=histo2d;};
+  void SetVector2d(Bool_t vector2d)                                 {fVector2d=vector2d;};
+  void SetVdriftLinear(Bool_t vdriftLinear)                         {fVdriftLinear = vdriftLinear;};
+  void SetNbTimeBins(Int_t nbTimeBins)                              {fNbTimeBins=nbTimeBins;};  
+  
+  void SetNz(Short_t nz, Int_t i)                                      {fNz[i]=nz;};
+  void SetNrphi(Short_t nrphi, Int_t i)                                {fNrphi[i]=nrphi;};
+  
+  void AddSelectedTriggerClass(const char*name)                        {fSelectedTrigger->Add(new TObjString(name));};
+  void SetReject(Bool_t rejected)                                      {fRejected = rejected;};
+  
+  void SetESDtrackCuts(AliESDtrackCuts * const esdtrackCuts)           {fEsdTrackCuts = esdtrackCuts;};
+  void SetRequirePrimaryVertex(Bool_t requirePrimaryVertex)            {fRequirePrimaryVertex = requirePrimaryVertex;};
+  void SetUseTPCVertex()                                               {fVtxTPC=kTRUE ; fVtxSPD=kFALSE;} 
+  void SetUseSPDVertex()                                               {fVtxTPC=kFALSE; fVtxSPD=kTRUE ;} 
+  void SetMinNbOfContributors(Int_t minNbOfContributors)               {fMinNbContributors = minNbOfContributors;};  
+  void SetRangePrimaryVertexZ(Double_t rangePrimaryVertexZ)            {fRangePrimaryVertexZ = TMath::Abs(rangePrimaryVertexZ);}; 
+  void SetMinNbTracks(Int_t minNbTracks)                               {fMinNbTracks = minNbTracks;};
+  void SetMaxNbTracks(Int_t maxNbTracks)                               {fMaxNbTracks = maxNbTracks;};
+  void SetVersionGainUsed(Int_t versionGainUsed)                       { fVersionGainUsed = versionGainUsed;   }
+  void SetSubVersionGainUsed(Int_t subVersionGainUsed)                 { fSubVersionGainUsed = subVersionGainUsed;   }
+  void SetVersionGainLocalUsed(Int_t versionGainLocalUsed)             { fVersionGainLocalUsed = versionGainLocalUsed;   }
+  void SetSubVersionGainLocalUsed(Int_t subVersionGainLocalUsed)       { fSubVersionGainLocalUsed = subVersionGainLocalUsed;   }
+  void SetVersionVdriftUsed(Int_t versionVdriftUsed)                   { fVersionVdriftUsed = versionVdriftUsed;   }
+  void SetSubVersionVdriftUsed(Int_t subVersionVdriftUsed)             { fSubVersionVdriftUsed = subVersionVdriftUsed;   }
+  
+  void SetLow(Int_t low)                                               {fLow=low;};
+  void SetHigh(Int_t high)                                             {fHigh=high;};
+  void SetFillZero(Bool_t fillZero)                                    {fFillZero =  fillZero;};
+  void SetNormalizeNbOfCluster(Bool_t normalizeNbOfCluster =  kTRUE)   {fNormalizeNbOfCluster = normalizeNbOfCluster;};
+  void SetMaxCluster(Float_t maxCluster)                               {fMaxCluster =  maxCluster; }; 
+  void SetNbMaxCluster(Short_t nbMaxCluster)                           {fNbMaxCluster =  nbMaxCluster; }; 
+  void SetOfflineTracks()                                              {fOfflineTracks=kTRUE; fStandaloneTracks=kFALSE; };
+  void SetStandaloneTracks()                                           {fStandaloneTracks=kTRUE; fOfflineTracks=kFALSE; };
+  
+  void SetCalDetGain(AliTRDCalDet * const calDetGain)                  {fCalDetGain = calDetGain;};  
+
+  void SetMaxEvent(Int_t nbevents)                                     { fMaxEvent = nbevents; };
+  void SetDebug(Int_t debug)                                           { fDebug = debug; };
+
+ private:
+  Bool_t SetVersionSubversion();
+  Bool_t ParticleGood(int i) const;
+
+  AliESDEvent  *fESD;                            //! ESD object
+  AliESDfriend *fESDfriend;                      //! ESD friend
+  const AliESDtrack *fkEsdTrack;                  //! ESD track
+  AliESDfriendTrack *fFriendTrack;               //! ESD friend track
+  TObject *fCalibObject;                         //! calibration objects attached to the ESD friend
+  AliTRDtrackV1 *fTrdTrack;                      //! trdtrack
+  AliTRDcluster *fCl;                            //! cluster
+  
+  TList       *fListHist;                        //! list of histograms
+
+  AliTRDCalibraFillHisto *fTRDCalibraFillHisto;  //! calibration analyse object
+
+  TH1I        *fNEvents;                         //! counter  
+  TH1I        *fNEventsInput;                    //! counter  
+  
+  TH1F        *fNbTRDTrack;                      //! nb ESD tracks with TRD clusters
+  TH1F        *fNbTRDTrackOffline;               //! nb ESD tracks with TRD clusters
+  TH1F        *fNbTRDTrackStandalone;            //! nb ESD tracks with TRD clusters
+  TH2F        *fNbTPCTRDtrack;                   //! nb TPC and TRD tracks when problems
+  TH2F        *fNbGoodTracks;                    //! nb of good tracks
+   
+  TH1F        *fNbTimeBin;                       //! nb Time Bin
+  TH1F        *fNbTimeBinOffline;                //! nb Time Bin offline
+  TH1F        *fNbTimeBinStandalone;             //! nb Time Bin standalone
+  TH1F        *fNbClusters;                      //! nb Clusters
+  TH1F        *fNbClustersOffline;               //! nb Clusters offline
+  TH1F        *fNbClustersStandalone;            //! nb Clusters standalone
+  TH1F        *fNbTracklets;                     //! nb Tracklets
+  TH1F        *fNbTrackletsOffline;              //! nb Tracklets offline
+  TH1F        *fNbTrackletsStandalone;           //! nb Tracklets standalone
+  
+  TH2F        *fAbsoluteGain;                    //! Absolute Gain without AliESDfriend
+  TH2I        *fCH2dSum;                         //! CH2d charge all
+  TProfile2D  *fPH2dSum;                         //! PH2d PH all
+  TH2I        *fCH2dSM;                          //! CH2d per SM
+  TProfile2D  *fPH2dSM;                          //! PH2d per SM
+
+  Bool_t      fHisto2d;                          // histo
+  Bool_t      fVector2d;                         // vector
+  Bool_t      fVdriftLinear;                     // vdrift Linear
+
+  Int_t       fNbTimeBins;                       // number of timebins 
+
+  Short_t     fNz[3];                            // Nz mode 
+  Short_t     fNrphi[3];                         // Nrphi mode
+   
+  TObjArray   *fSelectedTrigger;                 // Trigger class names accepted/rejected
+  Bool_t      fRejected;                         // Reject the selected trigger class
+  
+  AliESDtrackCuts *fEsdTrackCuts;                // Quality cut on the AliESDtrack
+  Bool_t      fRequirePrimaryVertex;             // Primary Vertex
+  Bool_t      fVtxTPC;                           // Flag for use of TPC vertex
+  Bool_t      fVtxSPD;                           // Flag for use of SPD vertex
+  Int_t       fMinNbContributors;                // Min number of contributors
+  Double_t    fRangePrimaryVertexZ;              // Were the primary vertex is
+  Int_t       fMinNbTracks;                      // Min Nb Tracks
+  Int_t       fMaxNbTracks;                      // Max Nb Tracks
+  
+  Int_t       fLow;                              // lower limit of nb of TRD clusters per tracklet
+  Int_t       fHigh;                             // higher limit of nb of TRD clusters per tracklet
+  Bool_t      fFillZero;                         // fill zero
+  Bool_t      fNormalizeNbOfCluster;             // normalize with number of clusters (per default not) 
+  Float_t     fRelativeScale;                    // relative scale for gas gain
+  Float_t     fMaxCluster;                       // Maxcluster 
+  Short_t     fNbMaxCluster;                     // Number of tb at the end
+  Bool_t      fOfflineTracks;                    // Only Offline refitted tracks
+  Bool_t      fStandaloneTracks;                 // Take only standalone tracks
+
+  Int_t       fFirstRunGain;                     // FirstRunGainUsed 
+  Int_t       fVersionGainUsed;                  // VersionGainUsed 
+  Int_t       fSubVersionGainUsed;               // SubVersionGainUsed
+  Int_t       fFirstRunGainLocal;                // FirstRunGainLocalUsed 
+  Int_t       fVersionGainLocalUsed;             // VersionGainLocalUsed 
+  Int_t       fSubVersionGainLocalUsed;          // SubVersionGainLocalUsed
+  Int_t       fFirstRunVdrift;                   // FirstRunVdriftUsed 
+  Int_t       fVersionVdriftUsed;                // VersionVdriftUsed 
+  Int_t       fSubVersionVdriftUsed;             // SubVersionVdriftUsed
+
+  AliTRDCalDet *fCalDetGain;                     // Calib object gain
+
+  Int_t       fMaxEvent;                         // max events
+  Int_t       fCounter;                          // max events
+  Int_t       fDebug;                            // fDebug
+
+  AliTRDCalibTask(const AliTRDCalibTask&); 
+  AliTRDCalibTask& operator=(const AliTRDCalibTask&); 
+
+  ClassDef(AliTRDCalibTask, 1); 
+};
+
+#endif
+
+