, fd0(0.0)
, fd0d0(0.0)
, fcosPoint(0.0)
- , mD0PDG(TDatabasePDG::Instance()->GetParticle(421)->Mass())
+ , fD0PDG(TDatabasePDG::Instance()->GetParticle(421)->Mass())
, fD0massHLT(NULL)
, fD0ptHLT(NULL)
, fD0massOFF(NULL)
, fd0(cuts[4])
, fd0d0(cuts[5])
, fcosPoint(cuts[6])
- , mD0PDG(TDatabasePDG::Instance()->GetParticle(421)->Mass())
+ , fD0PDG(TDatabasePDG::Instance()->GetParticle(421)->Mass())
, fD0massHLT(NULL)
, fD0ptHLT(NULL)
, fD0massOFF(NULL)
}
void AliAnalysisTaskD0Trigger::RecD0(Int_t& nD0, AliESDVertex *pV,bool isHLT){
-
- Double_t D0,D0bar,xdummy,ydummy;
+ // Reconstructing D0
+ Double_t starD0,starD0bar,xdummy,ydummy;
Double_t d0[2];
Double_t svpos[3];
Double_t pvpos[3];
tP->PropagateToDCA(vertexp1n1,fField,kVeryBig);
tN->PropagateToDCA(vertexp1n1,fField,kVeryBig);
- if((TMath::Abs(InvMass(tN,tP)-mD0PDG)) > finvMass && TMath::Abs((InvMass(tP,tN))-mD0PDG) > finvMass){continue;}
- cosThetaStar(tN,tP,D0,D0bar);
- if(TMath::Abs(D0) > fcosThetaStar && TMath::Abs(D0bar) > fcosThetaStar){continue;}
+ if((TMath::Abs(InvMass(tN,tP)-fD0PDG)) > finvMass && TMath::Abs((InvMass(tP,tN))-fD0PDG) > finvMass){continue;}
+ CosThetaStar(tN,tP,starD0,starD0bar);
+ if(TMath::Abs(starD0) > fcosThetaStar && TMath::Abs(starD0bar) > fcosThetaStar){continue;}
d0[0] = tP->GetD(pvpos[0],pvpos[1],fField);
d0[1] = tN->GetD(pvpos[0],pvpos[1],fField);
if((d0[0]*d0[1]) > fd0d0){continue;}
- if(pointingAngle(tN,tP,pvpos,svpos) < fcosPoint){continue;}
+ if(PointingAngle(tN,tP,pvpos,svpos) < fcosPoint){continue;}
if(isHLT){
fD0massHLT->Fill(InvMass(tN,tP));
Double_t AliAnalysisTaskD0Trigger::InvMass(AliExternalTrackParam* d1, AliExternalTrackParam* d2)
{
+ // Calculating the invariant mass
Double_t mpi=TDatabasePDG::Instance()->GetParticle(211)->Mass();
Double_t mK=TDatabasePDG::Instance()->GetParticle(321)->Mass();
}
-void AliAnalysisTaskD0Trigger::cosThetaStar(AliExternalTrackParam* d1, AliExternalTrackParam* d2,Double_t &D0,Double_t &D0bar)
+void AliAnalysisTaskD0Trigger::CosThetaStar(AliExternalTrackParam* d1, AliExternalTrackParam* d2,Double_t &D0,Double_t &D0bar)
{
+ //Calculating the decay angle
Double_t mD0 = TDatabasePDG::Instance()->GetParticle(421)->Mass();
Double_t mpi=TDatabasePDG::Instance()->GetParticle(211)->Mass();
Double_t mK=TDatabasePDG::Instance()->GetParticle(321)->Mass();
}
-Double_t AliAnalysisTaskD0Trigger::pointingAngle(AliExternalTrackParam* n, AliExternalTrackParam* p, Double_t *pv, Double_t *sv)
+Double_t AliAnalysisTaskD0Trigger::PointingAngle(AliExternalTrackParam* n, AliExternalTrackParam* p, Double_t *pv, Double_t *sv)
{
-
+ // Calcutating the pointing angle
TVector3 mom(n->Px()+p->Px(),n->Py()+p->Py(),n->Pz()+p->Pz());
TVector3 flight(sv[0]-pv[0],sv[1]-pv[1],sv[2]-pv[2]);
AliAODVertex* AliAnalysisTaskD0Trigger::ReconstructSecondaryVertex(TObjArray *trkArray, Double_t b, const AliESDVertex *v, bool useKF)
{
-
+ // Finding the vertex of the two tracks in trkArray
AliESDVertex *vertexESD = 0;
AliAODVertex *vertexAOD = 0;
if(!useKF){
AliVertexerTracks *vertexer = new AliVertexerTracks(b);
- AliESDVertex* Vertex = const_cast<AliESDVertex*>(v);
- vertexer->SetVtxStart(Vertex);
+ AliESDVertex* vertex = const_cast<AliESDVertex*>(v);
+ vertexer->SetVtxStart(vertex);
//if(isESD){vertexESD = (AliESDVertex*)vertexer->VertexForSelectedESDTracks(trkArray);}
UShort_t *id = new UShort_t[2];
AliExternalTrackParam *t1 = (AliExternalTrackParam*) trkArray->At(0);
if(vertexESD->GetNContributors()!=trkArray->GetEntriesFast()) {
//AliDebug(2,"vertexing failed");
delete vertexESD; vertexESD=NULL;
+ delete vertex;
return vertexAOD;
}
}
Double_t AliAnalysisTaskD0Trigger::Pt(AliExternalTrackParam* d1, AliExternalTrackParam* d2)
{
+ //Calculating pT of the two tracks
Double_t p1[3],p2[3];
d1->GetPxPyPz(p1);
d2->GetPxPyPz(p2);
TList *fOutputList; // list of output histograms
- void SingleTrackSelect(AliExternalTrackParam*, AliESDVertex*);
- void RecD0(Int_t&,AliESDVertex *,bool);
+ void SingleTrackSelect(AliExternalTrackParam* t, AliESDVertex* pV);
+ void RecD0(Int_t& nD0,AliESDVertex *pV,bool isHLT);
//from AliD0toKpi
Double_t InvMass(AliExternalTrackParam* d1, AliExternalTrackParam* d2);
- void cosThetaStar(AliExternalTrackParam* n, AliExternalTrackParam* p,Double_t &D0,Double_t &D0bar);
- Double_t pointingAngle(AliExternalTrackParam* n, AliExternalTrackParam* p, Double_t *pv, Double_t *sv);
+ void CosThetaStar(AliExternalTrackParam* n, AliExternalTrackParam* p,Double_t &D0,Double_t &D0bar);
+ Double_t PointingAngle(AliExternalTrackParam* n, AliExternalTrackParam* p, Double_t *pv, Double_t *sv);
Double_t Pt(AliExternalTrackParam* d1, AliExternalTrackParam* d2);
AliAODVertex* ReconstructSecondaryVertex(TObjArray *trkArray, Double_t b, const AliESDVertex *v, bool useKF);
- /// pt cut for decay, minimum [GeV/c]
- float fPtMin;
- /// Distance between decay tracks [cm] ??
- float fdca;
- /// Inv. mass half width [GeV]
- float finvMass;
- /// Decay angle
- float fcosThetaStar;
- /// Distance from primary vertex for decay tracks [cm]
- float fd0;
- /// Product of d0 for the two decay tracks [cm^2]
- float fd0d0;
- /// Pionting angle
- float fcosPoint;
-
- Double_t mD0PDG;
-
- /// D0 inv. mass plot
- TH1F *fD0massHLT;
- TH1F *fD0ptHLT;
- TH1F *fD0massOFF;
- TH1F *fD0ptOFF;
-
- vector<AliExternalTrackParam*> fPos;
- vector<AliExternalTrackParam*> fNeg;
-
- TObjArray *ftwoTrackArray;
-
- Int_t fTotalD0HLT;
- Int_t fTotalD0OFF;
- Double_t fField;
-
- Int_t fNevents;
+ float fPtMin; // pt cut for decay, minimum [GeV/c]
+ float fdca; // Distance between decay tracks [cm] ??
+ float finvMass; // Inv. mass half width [GeV]
+ float fcosThetaStar; // Decay angle
+ float fd0; // Distance from primary vertex for decay tracks [cm]
+ float fd0d0; // Product of d0 for the two decay tracks [cm^2]
+ float fcosPoint; // Pionting angle
+
+ Double_t fD0PDG; // Mass of D0 from PDG
+
+
+ TH1F *fD0massHLT; // D0 inv. mass plot from HLT
+ TH1F *fD0ptHLT; // D0 pT plot from HLT
+ TH1F *fD0massOFF; // D0 inv. mass plot from offline
+ TH1F *fD0ptOFF; // D0 pT plot from offline
+
+ vector<AliExternalTrackParam*> fPos; // vector for positive tracks
+ vector<AliExternalTrackParam*> fNeg; // vector for negative tracks
+
+ TObjArray *ftwoTrackArray; // Array for the two decay products
+
+ Int_t fTotalD0HLT; // Conter for numbers of D0 from HLT
+ Int_t fTotalD0OFF; // Conter for numbers of D0 from offline
+ Double_t fField; // Magnetic Field
+
+ Int_t fNevents; // Counter for number of events
- bool fuseKF;
+ bool fuseKF; // Bool for switching to KF
/// the default configuration entry for this component
static const char* fgkOCDBEntry; //!transient