]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/AliDielectronTrackRotator.h
including switch to set on/off iso-track core removal, cleaning and bug fix
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronTrackRotator.h
CommitLineData
2a14a7b1 1#ifndef ALIDIELECTRONTRACKROTATOR_H
2#define ALIDIELECTRONTRACKROTATOR_H
3
4/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7//#############################################################
8//# #
9//# Class AliDielectronTrackRotator #
10//# #
11//# Authors: #
12//# Anton Andronic, GSI / A.Andronic@gsi.de #
13//# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de #
14//# Julian Book, Uni Ffm / Julian.Book@cern.ch #
15//# Frederick Kramer, Uni Ffm, / Frederick.Kramer@cern.ch #
16//# Magnus Mager, CERN / Magnus.Mager@cern.ch #
17//# WooJin J. Park, GSI / W.J.Park@gsi.de #
18//# Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
19//# #
20//#############################################################
21
22#include <TNamed.h>
23
1201a1a9 24#include <AliKFParticle.h>
25
2a14a7b1 26class TObjArray;
27class AliVTrack;
1201a1a9 28class AliVEvent;
2a14a7b1 29
30class AliDielectronTrackRotator : public TNamed {
31public:
32 enum ERotationType {kRotatePositive, kRotateNegative, kRotateBothRandom};
33
34 AliDielectronTrackRotator();
35 AliDielectronTrackRotator(const char*name, const char* title);
36
37 virtual ~AliDielectronTrackRotator();
38
39 void SetTrackArrays(const TObjArray * const arrP, const TObjArray * const arrN) {fkArrTracksP=arrP;fkArrTracksN=arrN;}
40 void Reset();
41 Bool_t NextCombination();
42
43 //Setters
44 void SetIterations(UInt_t niter) { fIterations=niter; }
45 void SetRotationType(ERotationType type) { fRotationType=type; }
46 void SetStartAnglePhi(Double_t phi) { fStartAnglePhi=phi; }
47 void SetConeAnglePhi(Double_t phi) { fConeAnglePhi=phi; }
48
49 //Getters
50 Int_t GetIterations() const { return fIterations; }
51 ERotationType GetRotationType() const { return fRotationType; }
52 Double_t GetStartAnglePhi() const { return fStartAnglePhi; }
53 Double_t GetConeAnglePhi() const { return fConeAnglePhi; }
54
1201a1a9 55 void SetEvent(AliVEvent * const ev) { fEvent = ev; }
56 void SetPdgLegs(Int_t pdfLeg1, Int_t pdfLeg2) { fPdgLeg1=pdfLeg1; fPdgLeg2=pdfLeg2; }
2a14a7b1 57
1201a1a9 58 const AliKFParticle& GetKFTrackP() const {return fTrackP;}
59 const AliKFParticle& GetKFTrackN() const {return fTrackN;}
2a14a7b1 60
1201a1a9 61 AliVTrack* GetVTrackP() const {return fVTrackP;}
62 AliVTrack* GetVTrackN() const {return fVTrackN;}
63
2a14a7b1 64private:
65 UInt_t fIterations; // number of iterations
66
67 ERotationType fRotationType; // which track to rotate
68
69 Double_t fStartAnglePhi; // starting angle for rotation
70 Double_t fConeAnglePhi; // opening angle in phi for multiple rotation
71
1201a1a9 72 const TObjArray *fkArrTracksP; //! array of positive tracks
73 const TObjArray *fkArrTracksN; //! array of negative tracks
2a14a7b1 74
75 UInt_t fCurrentIteration; //! current iteration step
76 Int_t fCurrentTackP; //! current positive track in array
77 Int_t fCurrentTackN; //! current negative track in array
78
1201a1a9 79 AliVEvent *fEvent; //! current event
80
81 AliKFParticle fTrackP; //! Positive track
82 AliKFParticle fTrackN; //! Negative track
83
84 AliVTrack *fVTrackP; //! Positive track
85 AliVTrack *fVTrackN; //! Negative track
86
87 Int_t fPdgLeg1; //! pdg code leg1
88 Int_t fPdgLeg2; //! pdg code leg2
89
2a14a7b1 90
91 Bool_t RotateTracks();
92
93 AliDielectronTrackRotator(const AliDielectronTrackRotator &c);
94 AliDielectronTrackRotator &operator=(const AliDielectronTrackRotator &c);
95
96
97 ClassDef(AliDielectronTrackRotator,1) // Dielectron TrackRotator
98};
99
100
101
102#endif