FairRoot/PandaRoot
PndJPsiExample.cxx
Go to the documentation of this file.
1 /******************************************************
2 
3 JPsi->e+e-
4 Reads the TPC tracks and reconstruct the InvariantMass
5 of J/Psi: Dipak
6 *******************************************************/
7 
8 #include "TClonesArray.h"
9 
10 #include "FairRootManager.h"
11 #include "FairRunAna.h"
12 #include "FairRuntimeDb.h"
13 #include "PndLheCandidate.h"
14 
15 #include "TVector3.h"
16 #include "FairRun.h"
17 #include "FairRuntimeDb.h"
18 #include "PndJPsiExample.h"
19 #include <string>
20 
21 // ----- Default constructor -------------------------------------------
23  FairTask("FastSim Dump") {
24 }
25 // -------------------------------------------------------------------------
26 
27 // ----- Destructor ----------------------------------------------------
29 // -------------------------------------------------------------------------
30 
31 
32 
33 // ----- Public method Init --------------------------------------------
34 InitStatus PndJPsiExample::Init() {
35 
36  cout << " Inside the Init function****" << endl;
37 
38  //FairDetector::Initialize();
39  //FairRun* sim = FairRun::Instance();
40  //FairRuntimeDb* rtdb=sim->GetRuntimeDb();
41 
42  // Get RootManager
43  FairRootManager* ioman = FairRootManager::Instance();
44  if ( ! ioman ) {
45  cout << "-E- PndEmcHitProducer::Init: "
46  << "RootManager not instantiated!" << endl;
47  return kFATAL;
48  }
49  // Get input array
50  fTrArray = (TClonesArray*) ioman->GetObject("LheCandidate");
51  if ( ! fTrArray) {
52  cout << "-W- PndJPsiExample::Init: "
53  << "No TpcTrack array!" << endl;
54  return kERROR;
55  }
56 
57  // Create and register output array
58  cout << "-I- PndJPsiExample: Intialization successfull" << endl;
59 
60  fInvMass = new TH1D("invmass","",100,0.0,4.0);
61 
62  return kSUCCESS;
63 
64 }
65 
67 
68  // Get run and runtime database
69  FairRunAna* run = FairRunAna::Instance();
70  if ( ! run ) Fatal("SetParContainers", "No analysis run");
71 
72  FairRuntimeDb* db = run->GetRuntimeDb();
73  if ( ! db ) Fatal("SetParContainers", "No runtime database");
74 
75 
76 }
77 
78 // -------------------------------------------------------------------------
79 
80 // ----- Public method Exec --------------------------------------------
81 void PndJPsiExample::Exec(Option_t*) {
82 
83  // Reset output array
84  Int_t nTracks = fTrArray->GetEntriesFast();
85 
86  // cout <<"number of tracks **** "<< nTracks <<endl;
87 
88  for (Int_t i1=0; i1<nTracks; i1++){
89 
90  // Get the Tpc Track information
91  PndLheCandidate *tr1 = (PndLheCandidate*)fTrArray->At(i1);
92  track1.SetXYZM(tr1->GetPx(), tr1->GetPy(), tr1->GetPz(), 0.000511);
93 
94  for (Int_t i2=0; i2<nTracks; i2++){
95  PndLheCandidate *tr2 = (PndLheCandidate*)fTrArray->At(i2);
96 
97  track2.SetXYZM(tr2->GetPx(), tr2->GetPy(), tr2->GetPz(), 0.000511);
98 
99  TLorentzVector sumTrack = track1 + track2;
100 
101  fInvMass->Fill(sumTrack.M());
102 
103  }
104 
105  }
106 
107 }
108 // -------------------------------------------------------------------------
109 
111 {
112  fInvMass->Write();
113 }
114 
TClonesArray * fTrArray
Int_t run
Definition: autocutx.C:47
virtual void Exec(Option_t *opt)
virtual InitStatus Init()
TLorentzVector track1
virtual void SetParContainers()
virtual void Finish()
ClassImp(PndAnaContFact)
TLorentzVector track2