ROOT logo
#ifndef ALIANALYSISTASKITSTPCALIGNMENT_H
#define ALIANALYSISTASKITSTPCALIGNMENT_H

///////////////////////////////////////////////////////////////////////////
//  Class AliAnalysisTaskITSTPCalignment
//  runs ITS-TPC alignment with TPC vdrift calibration
//
//    Origin: Mikolaj Krzewicki, mikolaj.krzewicki@cern.ch
///////////////////////////////////////////////////////////////////////////

#include <AliAnalysisTaskSE.h>
class TList;
class TTree;
class AliESDEvent;
class AliESDfriend;
class AliMCEvent;
class AliRelAlignerKalman;
class AliRelAlignerKalmanArray;
class AliExternalTrackParam;
class TH2F;

class AliAnalysisTaskITSTPCalignment : public AliAnalysisTaskSE
{
public:

  enum { kNoESD=0,
         kNoESDfriend=1,
         kNoFriendTrack=2,
         kNoITSoutParams=3,
         kESDfriend=4,
         kFriendsSkipBit=5,
         kFriendTrack=6,
         kITSoutParams=7
       };

  AliAnalysisTaskITSTPCalignment();
  AliAnalysisTaskITSTPCalignment(const char *name);
  virtual ~AliAnalysisTaskITSTPCalignment() {}

  void SetupAlignerArray( Int_t t0, Int_t tend, Int_t slotwidth )
    { fT0=t0; fTend=tend; fSlotWidth=slotwidth; }
  void SetFillDebugTree(Bool_t m=kTRUE) {fFillDebugTree=m;}
  void SetDoQA(Bool_t d=kTRUE) {fDoQA=d;}
  void SetMinPt(Double_t m) {fMinPt=m;}
  void SetMinNclsITS(Int_t m) {fMinPointsVol1=m;}
  void SetMinNclsTPC(Int_t m) {fMinPointsVol2=m;}
  void DoQA(AliExternalTrackParam* paramsITS,
            AliExternalTrackParam* paramsTPC);
  void SetRejectOutliers(Bool_t set=kTRUE){fRejectOutliers=set;}
  void SetRejectOutliersSigma2Median(Bool_t set=kTRUE){fRejectOutliersSigma2Median=set;}
  void SetOutRejSigma(Double_t d){fOutRejSigma=d;}
  void SetOutRejSigma2Median(Double_t d){fOutRejSigma2Median=d;}
  void SetOutRejSigmaOnMerge(Double_t d){fOutRejSigmaOnMerge=d;}
  void SetUseITSoutGlobalTrack(Bool_t b){fUseITSoutGlobalTrack=b;}
  void SetUseITSoutITSSAtrack(Bool_t b){fUseITSoutITSSAtrack=b;}

  Int_t FindMatchingTracks(TObjArray& arrITS, TObjArray& arrTPC, AliESDEvent* pESD);
  void AnalyzeESDevent(AliESDEvent* event);
  
  //AnalysisTaskSE interface methods
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual Bool_t UserNotify();
  void Terminate(Option_t *);

private:
  AliRelAlignerKalmanArray* fArrayITSglobal;   //! array of aligners with ITS global
  AliRelAlignerKalmanArray* fArrayITSsa;   //! array of aligners ITS standalone
  TTree* fDebugTree;                  //! tree
  AliRelAlignerKalman* fAligner;      //! aligner
  TList* fList;                       //! list with QA histograms
 
  Bool_t fFillDebugTree;              // do we write the debug tree?
  Bool_t fDoQA;                       // do QA?
  Int_t fT0;                          // t0
  Int_t fTend;                        // tend
  Int_t fSlotWidth;                   // slotwidth
  Double_t fMinPt;                    // min pt for tracks
  Int_t fMinPointsVol1;               // min clusters its
  Int_t fMinPointsVol2;               // min clusters tpc
  Bool_t fRejectOutliers;             // reject outliers?
  Double_t fOutRejSigma;              // how many outliers
  Bool_t fRejectOutliersSigma2Median; // 
  Double_t fOutRejSigma2Median;       // 
  Double_t fOutRejSigmaOnMerge;       // 
  Bool_t fUseITSoutGlobalTrack;       //
  Bool_t fUseITSoutITSSAtrack;       //

  AliAnalysisTaskITSTPCalignment(const AliAnalysisTaskITSTPCalignment&); // not implemented
  AliAnalysisTaskITSTPCalignment& operator=(const AliAnalysisTaskITSTPCalignment&); // not implemented

  ClassDef(AliAnalysisTaskITSTPCalignment, 3);
};

#endif
 AliAnalysisTaskITSTPCalignment.h:1
 AliAnalysisTaskITSTPCalignment.h:2
 AliAnalysisTaskITSTPCalignment.h:3
 AliAnalysisTaskITSTPCalignment.h:4
 AliAnalysisTaskITSTPCalignment.h:5
 AliAnalysisTaskITSTPCalignment.h:6
 AliAnalysisTaskITSTPCalignment.h:7
 AliAnalysisTaskITSTPCalignment.h:8
 AliAnalysisTaskITSTPCalignment.h:9
 AliAnalysisTaskITSTPCalignment.h:10
 AliAnalysisTaskITSTPCalignment.h:11
 AliAnalysisTaskITSTPCalignment.h:12
 AliAnalysisTaskITSTPCalignment.h:13
 AliAnalysisTaskITSTPCalignment.h:14
 AliAnalysisTaskITSTPCalignment.h:15
 AliAnalysisTaskITSTPCalignment.h:16
 AliAnalysisTaskITSTPCalignment.h:17
 AliAnalysisTaskITSTPCalignment.h:18
 AliAnalysisTaskITSTPCalignment.h:19
 AliAnalysisTaskITSTPCalignment.h:20
 AliAnalysisTaskITSTPCalignment.h:21
 AliAnalysisTaskITSTPCalignment.h:22
 AliAnalysisTaskITSTPCalignment.h:23
 AliAnalysisTaskITSTPCalignment.h:24
 AliAnalysisTaskITSTPCalignment.h:25
 AliAnalysisTaskITSTPCalignment.h:26
 AliAnalysisTaskITSTPCalignment.h:27
 AliAnalysisTaskITSTPCalignment.h:28
 AliAnalysisTaskITSTPCalignment.h:29
 AliAnalysisTaskITSTPCalignment.h:30
 AliAnalysisTaskITSTPCalignment.h:31
 AliAnalysisTaskITSTPCalignment.h:32
 AliAnalysisTaskITSTPCalignment.h:33
 AliAnalysisTaskITSTPCalignment.h:34
 AliAnalysisTaskITSTPCalignment.h:35
 AliAnalysisTaskITSTPCalignment.h:36
 AliAnalysisTaskITSTPCalignment.h:37
 AliAnalysisTaskITSTPCalignment.h:38
 AliAnalysisTaskITSTPCalignment.h:39
 AliAnalysisTaskITSTPCalignment.h:40
 AliAnalysisTaskITSTPCalignment.h:41
 AliAnalysisTaskITSTPCalignment.h:42
 AliAnalysisTaskITSTPCalignment.h:43
 AliAnalysisTaskITSTPCalignment.h:44
 AliAnalysisTaskITSTPCalignment.h:45
 AliAnalysisTaskITSTPCalignment.h:46
 AliAnalysisTaskITSTPCalignment.h:47
 AliAnalysisTaskITSTPCalignment.h:48
 AliAnalysisTaskITSTPCalignment.h:49
 AliAnalysisTaskITSTPCalignment.h:50
 AliAnalysisTaskITSTPCalignment.h:51
 AliAnalysisTaskITSTPCalignment.h:52
 AliAnalysisTaskITSTPCalignment.h:53
 AliAnalysisTaskITSTPCalignment.h:54
 AliAnalysisTaskITSTPCalignment.h:55
 AliAnalysisTaskITSTPCalignment.h:56
 AliAnalysisTaskITSTPCalignment.h:57
 AliAnalysisTaskITSTPCalignment.h:58
 AliAnalysisTaskITSTPCalignment.h:59
 AliAnalysisTaskITSTPCalignment.h:60
 AliAnalysisTaskITSTPCalignment.h:61
 AliAnalysisTaskITSTPCalignment.h:62
 AliAnalysisTaskITSTPCalignment.h:63
 AliAnalysisTaskITSTPCalignment.h:64
 AliAnalysisTaskITSTPCalignment.h:65
 AliAnalysisTaskITSTPCalignment.h:66
 AliAnalysisTaskITSTPCalignment.h:67
 AliAnalysisTaskITSTPCalignment.h:68
 AliAnalysisTaskITSTPCalignment.h:69
 AliAnalysisTaskITSTPCalignment.h:70
 AliAnalysisTaskITSTPCalignment.h:71
 AliAnalysisTaskITSTPCalignment.h:72
 AliAnalysisTaskITSTPCalignment.h:73
 AliAnalysisTaskITSTPCalignment.h:74
 AliAnalysisTaskITSTPCalignment.h:75
 AliAnalysisTaskITSTPCalignment.h:76
 AliAnalysisTaskITSTPCalignment.h:77
 AliAnalysisTaskITSTPCalignment.h:78
 AliAnalysisTaskITSTPCalignment.h:79
 AliAnalysisTaskITSTPCalignment.h:80
 AliAnalysisTaskITSTPCalignment.h:81
 AliAnalysisTaskITSTPCalignment.h:82
 AliAnalysisTaskITSTPCalignment.h:83
 AliAnalysisTaskITSTPCalignment.h:84
 AliAnalysisTaskITSTPCalignment.h:85
 AliAnalysisTaskITSTPCalignment.h:86
 AliAnalysisTaskITSTPCalignment.h:87
 AliAnalysisTaskITSTPCalignment.h:88
 AliAnalysisTaskITSTPCalignment.h:89
 AliAnalysisTaskITSTPCalignment.h:90
 AliAnalysisTaskITSTPCalignment.h:91
 AliAnalysisTaskITSTPCalignment.h:92
 AliAnalysisTaskITSTPCalignment.h:93
 AliAnalysisTaskITSTPCalignment.h:94
 AliAnalysisTaskITSTPCalignment.h:95