8 #include "TClonesArray.h"
10 #include "FairRootManager.h"
11 #include "FairRunAna.h"
12 #include "FairRuntimeDb.h"
18 #include "../../hypGe/PndHypGePoint.h"
27 #include "FairRuntimeDb.h"
33 #include "LSLTrackRep.h"
58 FairTask(
"Panda HypSimpleAna Task") {
78 FairRootManager* ioman = FairRootManager::Instance();
80 cout <<
"-E- PndEmcHitProducer::Init: "
81 <<
"RootManager not instantiated!" << endl;
87 fMcTr = (TClonesArray*) ioman->GetObject(
"MCTrack");
88 fMcCands = (TClonesArray*) ioman->GetObject(
"HypHit");
89 fMc = (TClonesArray*) ioman->GetObject(
"HypPoint");
93 fMicroArray = (TClonesArray*) ioman->GetObject(
"PndPidCandidates");
96 cout <<
"-W- PndHypSimpleAna ::Init: "
97 <<
"No PndChargedCandidates && PndNeutralCandidates array!" << endl;
102 cout <<
"-I- PndHypSimpleAna : Intialization successfull" << endl;
104 ppi2mass =
new TH1F(
"ppimass",
"p pi cands",200,0.05,0.3);
105 ppi2 =
new TH1F(
"ppion",
"p pion cands",200,0.05,1.7);
106 e =
new TH1F(
"evenet",
"p event",200,10000,50000);
108 pid =
new TH2F(
"pid",
"cands",200,0,16,200,0,16);
109 pidh =
new TH2F(
"pidh",
"candsh",200,0,16,200,0,16);
110 ximass =
new TH1F(
"ximass",
"xi cands",200,0.05,2);
111 Lamb =
new TH1F(
"lamb mass",
"lamb cands",200,0.05,2);
127 hvtx2[0]=
new TH2F(
"hvtx201",
"vertex positions (x,z)",100,0.0,0.15,100,0.0,0.15);
128 hvtx2[1]=
new TH2F(
"hvtx202",
"vertex positions (x,z)",100,0.0,0.15,100,0.0,0.15);
129 hvtx2[2]=
new TH2F(
"hvtx203",
"vertex positions (x,z)",100,0.0,0.15,100,0.0,0.15);
130 hvtx2[3]=
new TH2F(
"hvtx204",
"vertex positions (x,z)",100,0.0,0.15,100,0.0,0.15);
131 hvtx2[4]=
new TH2F(
"hvtx205",
"vertex positions (x,z)",100,0.03,0.15,100,0.03,0.15);
132 hvtx2[5]=
new TH2F(
"hvtx206",
"vertex positions (x,z)",100,0.03,0.15,100,0.03,0.15);
133 hvtx2[6]=
new TH2F(
"hvtx207",
"vertex positions (x,z)",100,0.03,0.15,100,0.03,0.15);
134 hvtx2[7]=
new TH2F(
"hvtx208",
"vertex positions (x,z)",100,0.03,0.15,100,0.03,0.15);
135 hvtx2[8]=
new TH2F(
"hvtx209",
"vertex positions (x,z)",100,0.03,0.15,100,0.03,0.15);
136 hvtx2[9]=
new TH2F(
"hvtx210",
"vertex positions (x,z)",100,0.03,0.15,100,0.03,0.15);
166 FairRunAna*
run = FairRunAna::Instance();
167 if ( ! run ) Fatal(
"SetParContainers",
"No analysis run");
188 RhoCandList neutralCands,chargedCands, plusCands,minusCands;
192 RhoCandList xiCands,nonOvCands,dsCands,ds0Cands,ppCands;
193 std::map<Int_t,Float_t > mapp;
203 for (Int_t i1=0; i1<
fMicroArray->GetEntriesFast(); i1++){
206 TLorentzVector l=tc.
P4();
210 chargedCands.
Add(&tc);
242 while (t2=iterP.
Next())
246 TLorentzVector l=t2->
P4();
248 TVector3 pim = l.Vect();
268 for (
int k=0;k<
npi;k++)
289 while (t3=itP.
Next())
293 TLorentzVector v4=t3->
P4();
295 TVector3 v3 = v4.Vect();
298 ppi2->Fill(v3.Mag());
309 TLorentzVector vpim=pi->
P4();
310 TVector3 pi3v = vpim.Vect();
315 hvtx2[2]->Fill(0.,pi3v.Mag());}
318 hvtx2[3]->Fill(pi3v.Mag(),0.);
325 for (ii=0;ii<dsi-1;ii++)
331 TLorentzVector vpim=pi->
P4();
332 TVector3 pi3v = vpim.Vect();
334 for (jj=ii+1;jj<dsi;jj++)
339 TLorentzVector vpp=pp->
P4();
340 TVector3 pp3v = vpp.Vect();
351 if (MotherId==-1)Motherpdg = mc->
GetPdgCode();
368 cout<<
" Motherpdg "<<Motherpdg<<
" "<<mc->
GetPdgCode()<<endl;
382 if(pi3v.Mag()>pp3v.Mag())
385 hvtx2[0]->Fill(pi3v.Mag(),pp3v.Mag());
387 if((pi3v.Mag()>0.12&&pi3v.Mag()<0.14)&&(pp3v.Mag()>0.065&&pp3v.Mag()<0.08)) {
392 hvtx2[1]->Fill(pi3v.Mag(),pp3v.Mag());
404 if(Motherpdg==1020040110||Motherpdg==1010050110){
408 if(Motherpdg==1020030090||(Motherpdg==1010040090 && MotherId!=-1)){
419 if((pi3v.Mag()>0.112&&pi3v.Mag()<0.126)&&(pp3v.Mag()>0.09&&pp3v.Mag()<0.103)){
428 if((pi3v.Mag()>0.128&&pi3v.Mag()<0.147)&&(pp3v.Mag()>0.0898&&pp3v.Mag()<0.109)){
443 if(Motherpdg==1020040100||Motherpdg==1010050100){
450 if((pi3v.Mag()>0.097&&pi3v.Mag()<0.106)&&(pp3v.Mag()>0.094&&pp3v.Mag()<0.103)) {
468 if(Motherpdg==1020040120||Motherpdg==1010050120){
476 if((pi3v.Mag()>0.128&&pi3v.Mag()<0.147)&&(pp3v.Mag()>0.110&&pp3v.Mag()<0.124)) {
492 if(Motherpdg==1020020060||Motherpdg==1010030060){
500 if((pi3v.Mag()>0.128&&pi3v.Mag()<0.147)&&(pp3v.Mag()>0.124&&pp3v.Mag()<0.143)) {
521 if(pi3v.Mag()<pp3v.Mag()) {
524 hvtx2[0]->Fill(pp3v.Mag(),pi3v.Mag());
527 if(Motherpdg==1020040110||Motherpdg==1010050110){
533 if((pp3v.Mag()>0.12&&pp3v.Mag()<0.14)&&(pi3v.Mag()>0.065&&pi3v.Mag()<0.08)) {
536 hvtx2[1]->Fill(pp3v.Mag(),pi3v.Mag());
547 if(Motherpdg==1020030090||(Motherpdg==1010040090&& MotherId!=-1)){
552 if((pp3v.Mag()>0.112&&pp3v.Mag()<0.126)&&(pi3v.Mag()>0.09&&pi3v.Mag()<0.103))
567 if((pp3v.Mag()>0.128&&pp3v.Mag()<0.147)&&(pi3v.Mag()>0.0898&&pi3v.Mag()<0.109))
569 hvtx2[9]->Fill(pp3v.Mag(),pi3v.Mag());
580 if(Motherpdg==1020040100||Motherpdg==1010050100){
586 if((pp3v.Mag()>0.097&&pp3v.Mag()<0.106)&&(pi3v.Mag()>0.094&&pi3v.Mag()<0.103)) {
599 if(Motherpdg==1020040120||Motherpdg==1010050120){
605 if((pp3v.Mag()>0.128&&pp3v.Mag()<0.147)&&(pi3v.Mag()>0.110&&pi3v.Mag()<0.124)) {
620 if(Motherpdg==1020020060||Motherpdg==1010030060){
628 if((pp3v.Mag()>0.128&&pp3v.Mag()<0.147)&&(pi3v.Mag()>0.124&&pi3v.Mag()<0.143)) {
671 if(ion>1000000000&&(ion<1010000000))
683 if((ion>1010000000||ion>1020000000))
700 TFile*
file = FairRootManager::Instance()->GetOutFile();
732 for(
int i=0;
i<10;
i++){
void Add(const RhoCandidate *c)
RhoMinusParticleSelector * minusSel
PndPidCandidate * GetRecoCandidate() const
Int_t GetIonCharge(Int_t Z, Int_t &mass, Int_t &str)
RhoMassParticleSelector * LambMSel
TClonesArray * fMicroArray
void Select(RhoParticleSelectorBase *pidmgr)
virtual InitStatus Init()
TLorentzVector P4() const
static RhoFactory * Instance()
virtual void SetCriterion(const char *crit)
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
RhoSimplePionSelector * piSel
virtual void SetParContainers()
TVector3 GetStartVertex() const
Int_t GetMotherID() const
virtual void Exec(Option_t *opt)
RhoPlusParticleSelector * plusSel
RhoCandidate * Get(Int_t)