4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////
8 //---------------------------------------------
9 // Class for transverse regions analysis
10 //---------------------------------------------
11 ////////////////////////////////////////////////
13 // --- ROOT system ---
16 class AliAnalysisTaskUE;
20 class AliGenPythiaEventHeader;
21 class AliHistogramsUE;
22 class AliInputEventHandler;
27 class AliAnalyseUE : public TObject {
31 AliAnalyseUE(); //constructor
32 AliAnalyseUE(const AliAnalyseUE & g); //copy constructor
33 AliAnalyseUE & operator = (const AliAnalyseUE & g); //assignment operator
34 virtual ~AliAnalyseUE(); //virtual destructor
36 void AnalyseMC(TVector3 *jetVect, AliMCEvent *mcEvent, AliGenPythiaEventHeader *pythiaGenHeader, Int_t conePosition, Bool_t useAliStack, Bool_t constrainDistance, Double_t minDistance);
37 Bool_t AnaTypeSelection(TVector3 *jetVect);
39 void FillRegions(Bool_t isNorm2Area, TVector3 *jetVect);
41 void FindMaxMinRegions(TVector3 *jetVect, Int_t conePosition, Int_t mctrue, Int_t eff);
43 TVector3 GetOrderedClusters(TString aodBranch, Bool_t chargedJets, Double_t chJetPtMin);
45 TVector3 GetLeadingTracksMC(AliMCEvent *mcEvent);
47 virtual Int_t GetLtLabel() const { return fLtLabel; }
48 virtual Int_t GetLtMCLabel() const { return fLtMCLabel; }
50 void Initialize(AliAnalysisTaskUE& tmp);
51 //void Initialize(AliAnalysisTask& tmp);
53 void Initialize(Int_t anaType, AliAODEvent* aod,Double_t coneRadius, Int_t debug, Int_t filterBit, Double_t jet1EtaCut, Double_t jet2DeltaPhiCut, Double_t jet2RatioPtCut, Double_t jet3PtCut, Int_t ordering, Int_t regionType,Bool_t simulateChJetPt, Double_t trackEtaCut, Double_t trackPtCut, Bool_t useChargeHadrons, Bool_t useChPartJet, Bool_t usePositiveCharge, Bool_t useSingleCharge, AliHistogramsUE* histos);
55 Bool_t TriggerSelection(AliInputEventHandler* input);
57 Bool_t VertexSelection(AliAODEvent *value, Int_t tracks, Double_t zed);
59 Bool_t VertexSelectionOld(AliAODEvent *value);
63 // Various setters when you do not want to initialize members from AliAnalysisTaskUE
64 void SetAnaTopology(Int_t value) { fAnaType = value; }
65 void SetAOD(AliAODEvent *value) { fkAOD = value; }
66 void SetConeRadius(Double_t value) { fConeRadius = value; }
67 void SetDebug(Int_t value) { fDebug = value; }
68 void SetESDEvent(AliESDEvent *value) { fkESD = value; }
69 void SetFilterBit(Int_t value) { fFilterBit = value; }
70 void SetJet1EtaCut(Double_t value) { fJet1EtaCut = value; }
71 void SetJet2DeltaPhiCut(Double_t value) { fJet2DeltaPhiCut = value; }
72 void SetJet2RatioPtCut(Double_t value) { fJet2RatioPtCut = value; }
73 void SetJet3PtCut(Double_t value) { fJet3PtCut = value; }
74 void SetOrdering(Int_t value) { fOrdering = value; }
75 void SetRegionType(Int_t value) { fRegionType = value; }
76 void SetSimulateChJetPt(Bool_t value) { fSimulateChJetPt = value; }
77 void SetTrackEtaCut(Double_t value) { fTrackEtaCut = value; }
78 void SetTrackPtCut(Double_t value) { fTrackPtCut = value; }
79 void SetUseChargeHadrons(Bool_t value) { fUseChargeHadrons = value; }
80 void SetUseChPartJet(Bool_t value) { fUseChPartJet = value; }
81 void SetUsePositiveCharge(Bool_t value) { fUsePositiveCharge = value; }
82 void SetUseSingleCharge(Bool_t value) { fUseSingleCharge = value; }
84 void SetStack(AliStack* value) { fStack = value; }
87 void FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
88 void FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
89 void FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
90 TObjArray* FindChargedParticleJets( Double_t chJetPtMin);
91 Int_t IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect, Int_t conePosition);
92 void QSortTracks(TObjArray &a, Int_t first, Int_t last);
93 void QSortTracksMC(TObjArray &a, Int_t first, Int_t last);
94 void SetRegionArea(TVector3 *jetVect);
95 TObjArray* SortChargedParticles();
96 TObjArray* SortChargedParticlesMC();
97 virtual Bool_t TrackSelected(AliAODTrack* part) const;
98 virtual Bool_t TrackSelectedEfficiency(AliAODTrack* part) const;
99 virtual Bool_t TrackMCSelected(Double_t charge, Double_t pT, Double_t eta, Int_t pdgCode) const;
102 //AliAnalysisTaskUE fTaskUE; // current instance of the analysis-task
103 const AliAODEvent* fkAOD; //! AOD Event
104 AliMCEvent* fkMC; //! MC Event
105 AliESDEvent* fkESD; //! ESD Event (only needed to get track DCA)
106 Int_t fDebug; // Debug flag
110 Bool_t fSimulateChJetPt; // Naive simulation of charged jet Pt from original Jet in MC Header
111 AliStack* fStack; // Instance of MC Particle Stack
114 Int_t fAnaType; // Analysis type on jet topology:
115 Double_t fAreaReg; // Area of the region To be used as normalization factor when filling histograms
116 Double_t fConeRadius; // if selected Cone-like region type, set Radius (=0.7 default)
117 UInt_t fFilterBit; // Select tracks from an specific track cut (default 0xFF all track selected)
118 Int_t fRegionType; // 1 = transverse regions (default)
120 Bool_t fUseChargeHadrons; // Only use charge hadrons
121 Bool_t fUseChPartJet; // Use "Charged Particle Jet" instead of jets from AOD see FindChargedParticleJets()
123 Bool_t fUsePositiveCharge; //If Single type of charge used then set which one (=kTRUE default positive)
124 Bool_t fUseSingleCharge; //Make analysis for a single type of charge (=kFALSE default)
126 Int_t fOrdering; // Pt and multiplicity summation ordering:
129 Double_t fJet1EtaCut; // |jet1 eta| < fJet1EtaCut (fAnaType = 1,2,3)
130 Double_t fJet2DeltaPhiCut; // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
131 Double_t fJet2RatioPtCut; // Jet2.Pt/Jet1Pt > fJet2RatioPtCut (fAnaType = 2,3)
132 Double_t fJet3PtCut; // Jet3.Pt < fJet3PtCut (fAnaType = 3)
135 Double_t fTrackEtaCut; // Eta cut on tracks in the regions (fRegionType=1)
136 Double_t fTrackPtCut; // Pt cut of tracks in the regions
137 AliHistogramsUE* fHistos; // Pointer to histogram class
139 //to fill the different regions
140 Double_t fSumPtRegionPosit; // Sum pT in positive region
141 Double_t fSumPtRegionNegat; // Sum pT in negative region
142 Double_t fSumPtRegionForward; // Sum pT in forward region
143 Double_t fSumPtRegionBackward; // Sum pT in backward region
144 Double_t fMaxPartPtRegion; // Max part pt in region
145 Int_t fNTrackRegionPosit; // Tracks in positive region
146 Int_t fNTrackRegionNegat; // Tracks in negative region
147 Int_t fNTrackRegionForward; // Track in forward region
148 Int_t fNTrackRegionBackward;// Tracks in backward region
150 //Store analysis settings
151 TTree* fSettingsTree; // To store analysis settings
153 //Leading track labels
154 Int_t fLtLabel; // Label of reconstructed leading track
155 Int_t fLtMCLabel; // Label of true leading track
158 ClassDef(AliAnalyseUE,0)