1 #include <TClonesArray.h> 8 #include <TLorentzVector.h> 14 #include <AliAnalysisDataSlot.h> 15 #include <AliAnalysisDataContainer.h> 17 #include "TMatrixDSym.h" 18 #include "TMatrixDSymEigen.h" 21 #include "AliVCluster.h" 22 #include "AliVTrack.h" 27 #include "AliMCEvent.h" 28 #include "AliGenPythiaEventHeader.h" 29 #include "AliAODMCHeader.h" 30 #include "AliMCEvent.h" 31 #include "AliAnalysisManager.h" 39 #include "AliAODEvent.h" 51 fJetShapeType(kPythiaDef),
58 fTreeObservableTagging(0)
61 for(
Int_t i=0;i<17;i++){
63 SetMakeGeneralHistograms(kTRUE);
64 DefineOutput(1, TList::Class());
65 DefineOutput(2, TTree::Class());
72 fJetShapeType(kPythiaDef),
79 fTreeObservableTagging(0)
83 for(
Int_t i=0;i<17;i++){
87 DefineOutput(1, TList::Class());
88 DefineOutput(2, TTree::Class());
104 Bool_t oldStatus = TH1::AddDirectoryStatus();
105 TH1::AddDirectory(kFALSE);
110 fh2ResponseUW=
new TH2F(
"fh2ResponseUW",
"fh2ResponseUW", 100, 0, 200, 100, 0, 200);
112 fPtJet=
new TH1F(
"fPtJet",
"fPtJet", 100, 0, 200);
116 fNbOfConstvspT=
new TH2F(
"fNbOfConstvspT",
"fNbOfConstvspT", 100, 0, 100, 200, 0, 200);
119 fNumberOfJet=
new TH1F(
"fNumberOfJet",
"fNumberOfJet",100,0.5,100.5);
128 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
133 TH1::AddDirectory(oldStatus);
135 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
141 fShapesVarNames[0] =
"partonCode";
142 fShapesVarNames[1] =
"ptJet";
143 fShapesVarNames[2] =
"ptDJet";
144 fShapesVarNames[3] =
"mJet";
146 fShapesVarNames[4] =
"angularity";
147 fShapesVarNames[5] =
"circularity";
148 fShapesVarNames[6] =
"lesub";
151 fShapesVarNames[7] =
"ptJetMatch";
152 fShapesVarNames[8] =
"ptDJetMatch";
153 fShapesVarNames[9] =
"mJetMatch";
155 fShapesVarNames[10] =
"angularityMatch";
156 fShapesVarNames[11] =
"circularityMatch";
157 fShapesVarNames[12] =
"lesubMatch";
159 fShapesVarNames[13]=
"weightPythia";
160 fShapesVarNames[14]=
"ntrksEvt";
163 fShapesVarNames[15]=
"ptUnsub";
166 cout<<
"looping over variables"<<endl;
172 delete [] fShapesVarNames;
194 TClonesArray *trackArrayAn = partContAn->GetArray();
195 Int_t ntracksEvt = trackArrayAn->GetEntriesFast();
200 jetCont->ResetCurrentID();
209 cout<<
"Jet detector level Pt is"<<jet1->
Pt()<<endl;
220 Printf(
"jet3 does not exist, returning");
224 cout<<
"jet3 particle level pt is"<<jet3->
Pt()<<endl;
248 Float_t ptMatch=0., ptDMatch=0., massMatch=0.,angulMatch=0.,circMatch=0., lesubMatch=0.;
329 AliVParticle *vp1 = 0x0;
334 Printf(
"AliVParticle associated to constituent not found");
339 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
341 num=num+vp1->Pt()*dr;
366 AliVParticle *vp1 = 0x0;
371 Printf(
"AliVParticle associated to constituent not found");
375 num=num+vp1->Pt()*vp1->Pt();
378 return TMath::Sqrt(num)/den;
386 return PTD(jet, jetContNb);
407 TVector3 ppJ1(pxjet, pyjet, pzjet);
408 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
410 TVector3 ppJ2(-pyjet, pxjet, 0);
412 AliVParticle *vp1 = 0x0;
417 Printf(
"AliVParticle associated to constituent not found");
421 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
424 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
425 TVector3 pPerp = pp - pLong;
428 Float_t ppjX = pPerp.Dot(ppJ2);
429 Float_t ppjY = pPerp.Dot(ppJ3);
430 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
431 if(ppjT<=0)
return 0;
433 mxx += (ppjX * ppjX / ppjT);
434 myy += (ppjY * ppjY / ppjT);
435 mxy += (ppjX * ppjY / ppjT);
440 if(sump2==0)
return 0;
442 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
443 TMatrixDSym m0(2,ele);
446 TMatrixDSymEigen m(m0);
448 TMatrixD evecm = m.GetEigenVectors();
449 eval = m.GetEigenValues();
453 if (eval[0] < eval[1]) jev = 1;
456 evec0 = TMatrixDColumn(evecm, jev);
459 TVector2 evec(compx, compy);
461 if(jev==1) circ=2*eval[0];
462 if(jev==0) circ=2*eval[1];
490 AliVParticle *vp1 = 0x0;
491 AliVParticle *vp2 = 0x0;
492 std::vector<int> ordindex;
497 if(ordindex.size()<2)
return -1;
501 Printf(
"AliVParticle associated to Leading constituent not found");
507 Printf(
"AliVParticle associated to Subleading constituent not found");
526 return LeSub(jet, jetContNb);
552 AliVParticle *vp1 = 0x0;
557 Printf(
"AliVParticle associated to constituent not found");
565 mxx += ppt*ppt*deta*deta;
566 myy += ppt*ppt*dphi*dphi;
567 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
573 if(sump2==0)
return 0;
575 Double_t ele[4] = {mxx , mxy , mxy , myy };
576 TMatrixDSym m0(2,ele);
579 TMatrixDSymEigen m(m0);
581 TMatrixD evecm = m.GetEigenVectors();
582 eval = m.GetEigenValues();
586 if (eval[0] < eval[1]) jev = 1;
589 evec0 = TMatrixDColumn(evecm, jev);
592 TVector2 evec(compx, compy);
594 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
595 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
608 return Sigma2(jet, jetContNb);
616 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
617 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
618 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
619 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
620 double dphi = mphi-vphi;
621 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
622 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Bool_t RetrieveEventObjects()
Container for particles within the EMCAL framework.
Int_t TrackAt(Int_t idx) const
UShort_t GetNumberOfTracks() const
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
AliParticleContainer * GetParticleContainer() const
AliEmcalJet * GetNextAcceptJet()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
AliEmcalList * fOutput
!output list
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Declaration of class AliEmcalPythiaInfo.
void UserCreateOutputObjects()
Main initialization function on the worker.
AliEmcalJetShapeProperties * GetShapeProperties() const
Double_t GetFirstOrderSubtracted() const
Container for jet within the EMCAL jet framework.
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const