1 /**************************************************************************
2 * Contributors are not mentioned at all. *
4 * Permission to use, copy, modify and distribute this software and its *
5 * documentation strictly for non-commercial purposes is hereby granted *
6 * without fee, provided that the above copyright notice appears in all *
7 * copies and that both the copyright notice and this permission notice *
8 * appear in the supporting documentation. The authors make no claims *
9 * about the suitability of this software for any purpose. It is *
10 * provided "as is" without express or implied warranty. *
11 **************************************************************************/
13 //-----------------------------------------------------------------
14 // AliAnalysisTaskHelium3Pi class
15 //-----------------------------------------------------------------
22 #include "AliAnalysisManager.h"
23 #include <AliMCEventHandler.h>
24 #include <AliMCEvent.h>
31 class AliCascadeVertexer;
34 #include "AliAnalysisTaskSE.h"
46 #include "Riostream.h"
48 #include "AliCascadeVertexer.h"
49 #include "AliESDEvent.h"
50 #include "AliESDtrack.h"
51 #include "AliExternalTrackParam.h"
52 #include "AliAODEvent.h"
53 #include "AliInputEventHandler.h"
54 #include "AliESDcascade.h"
55 #include "AliAODcascade.h"
56 #include "AliAnalysisTaskHelium3PiMC.h"
57 #include "AliESDtrackCuts.h"
58 #include "AliCentrality.h"
65 const Int_t AliAnalysisTaskHelium3PiMC::fgNrot = 15;
68 ClassImp(AliAnalysisTaskHelium3PiMC)
70 //________________________________________________________________________
71 AliAnalysisTaskHelium3PiMC::AliAnalysisTaskHelium3PiMC()
72 : AliAnalysisTaskSE(),
77 fHistEventMultiplicity(0),
78 fHistTrackMultiplicity(0),
79 fHistMCMultiplicityTracks(0),
83 fHistMCDecayPosition(0),
85 fhRigidityHevsMomPiMC(0),
86 fhRigidityHevsMomPiRec(0),
101 fhBBTPCNegativePions(0),
102 fhBBTPCPositivePions(0),
105 fHistPercentileVsTrackNumber(0),
115 // Dummy Constructor(0);
118 //________________________________________________________________________
119 AliAnalysisTaskHelium3PiMC::AliAnalysisTaskHelium3PiMC(const char *name)
120 : AliAnalysisTaskSE(name),
121 fAnalysisType("ESD"),
122 fCollidingSystems(0),
125 fHistEventMultiplicity(0),
126 fHistTrackMultiplicity(0),
127 fHistMCMultiplicityTracks(0),
131 fHistMCDecayPosition(0),
133 fhRigidityHevsMomPiMC(0),
134 fhRigidityHevsMomPiRec(0),
149 fhBBTPCNegativePions(0),
150 fhBBTPCPositivePions(0),
153 fHistPercentileVsTrackNumber(0),
164 // Define input and output slots here
165 // Input slot #0 works with a TChain
166 //DefineInput(0, TChain::Class());
167 // Output slot #0 writes into a TList container (Cascade)
168 DefineOutput(1, TList::Class());
170 //_______________________________________________________
171 AliAnalysisTaskHelium3PiMC::~AliAnalysisTaskHelium3PiMC()
174 if (fListHistCascade) {
175 delete fListHistCascade;
176 fListHistCascade = 0;
180 //=================DEFINITION BETHE BLOCH==============================
182 Double_t AliAnalysisTaskHelium3PiMC::BetheBloch(Double_t betaGamma,Double_t charge,Bool_t isPbPb) {
184 Double_t kp1, kp2, kp3, kp4, kp5;
188 //pass2 //to be checked
189 kp1 = 5.2*charge*charge;
190 kp2 = 8.98482806165147636e+00;
191 kp3 = 1.54000000000000005e-05;
192 kp4 = 2.30445734159456084e+00;
193 kp5 = 2.25624744086878559e+00;
200 //pass2 // to be defined
201 kp1 = 5.2*charge*charge;
202 kp2 = 8.98482806165147636e+00;
203 kp3 = 1.54000000000000005e-05;
204 kp4 = 2.30445734159456084e+00;
205 kp5 = 2.25624744086878559e+00;
209 Double_t beta = betaGamma / TMath::Sqrt(1.0 + betaGamma * betaGamma);
211 Double_t aa = TMath::Power(beta, kp4);
212 Double_t bb = TMath::Power(1.0 / betaGamma, kp5);
214 bb = TMath::Log(kp3 + bb);
216 Double_t out = (kp2 - aa - bb) * kp1 / aa;
222 //==================DEFINITION OF OUTPUT OBJECTS==============================
224 void AliAnalysisTaskHelium3PiMC::UserCreateOutputObjects()
226 fListHistCascade = new TList();
227 fListHistCascade->SetOwner(); // IMPORTANT!
229 if(! fHistEventMultiplicity ){
230 fHistEventMultiplicity = new TH1F( "fHistEventMultiplicity" , "Nb of Events" , 6 , -1, 5 );
231 fHistEventMultiplicity->GetXaxis()->SetTitle("Event Type");
232 fListHistCascade->Add(fHistEventMultiplicity);
235 if(! fHistTrackMultiplicity ){
237 fHistTrackMultiplicity = new TH1F( "fHistTrackMultiplicity" , "Nb of Tracks" , 25000,0, 25000 );
238 fHistTrackMultiplicity->GetXaxis()->SetTitle("Number of tracks");
239 fListHistCascade->Add(fHistTrackMultiplicity);
242 if(! fHistMCMultiplicityTracks){
243 fHistMCMultiplicityTracks =new TH1F("fHistMCMultiplicityTracks","MC Multiplicity Tracks",1000,0,1000);
244 fHistMCMultiplicityTracks->GetXaxis()->SetTitle("MC Number of tracks");
245 fListHistCascade->Add(fHistMCMultiplicityTracks);
248 fHistMCEta=new TH1F("fHistMCEta","MC eta",1000,-3,3);
249 fHistMCEta->GetXaxis()->SetTitle("Injected Eta");
250 fListHistCascade->Add(fHistMCEta);
253 fHistMCPt =new TH1F("fHistMCPt","MC pt",1000,0,20);
254 fHistMCPt->GetXaxis()->SetTitle("Injected Pt");
255 fListHistCascade->Add(fHistMCPt);
258 fHistMCTheta=new TH1F("fHistMCTheta","MC theta",1000,-6,6);
259 fHistMCTheta->GetXaxis()->SetTitle("Injected Theta");
260 fListHistCascade->Add(fHistMCTheta);
262 if(!fHistMCDecayPosition){
263 fHistMCDecayPosition =new TH1F("fHistMCDecayPosition","MC Decay Position",10000,0,1000);
264 fHistMCDecayPosition->GetXaxis()->SetTitle("Decay Position");
265 fListHistCascade->Add(fHistMCDecayPosition);
267 if(!fHistMCDecayRho ){
268 fHistMCDecayRho =new TH1F("fHistMCDecayRho","MC decay position 3d",10000,0,1000);
269 fHistMCDecayRho->GetXaxis()->SetTitle("Decay rho");
270 fListHistCascade->Add(fHistMCDecayRho);
273 if(!fhRigidityHevsMomPiMC ){
274 fhRigidityHevsMomPiMC=new TH2F("fhRigidityHevsMomPiMC","Rigidity He vs Mom Pi MC",20,0,10,300,0,30);
275 fhRigidityHevsMomPiMC->GetXaxis()->SetTitle("He3 Rigidity");
276 fhRigidityHevsMomPiMC->GetYaxis()->SetTitle("Pi momentum");
277 fListHistCascade->Add(fhRigidityHevsMomPiMC);
280 if(! fhRigidityHevsMomPiRec){
281 fhRigidityHevsMomPiRec=new TH2F("fhRigidityHevsMomPiRec","Rigidity He vs Mom Pi Rec",20,0,10,300,0,30);
282 fhRigidityHevsMomPiRec->GetXaxis()->SetTitle("He3 Rigidity");
283 fhRigidityHevsMomPiRec->GetYaxis()->SetTitle("Pi momentum");
284 fListHistCascade->Add(fhRigidityHevsMomPiRec);
288 fhInvMassMC=new TH1F("fhInvMassMC","fhInvMassMC",800,2.,6.);
289 fhInvMassMC->GetXaxis()->SetTitle("(He3,#pi) InvMass");
290 fListHistCascade->Add(fhInvMassMC);
294 fhInvMassMum=new TH1F("fhInvMassMum","fhInvMassMum",800,2.,6.);
295 fhInvMassMum->GetXaxis()->SetTitle("(He3,#pi) InvMass");
296 fListHistCascade->Add(fhInvMassMum);
300 fhInvMassRec=new TH1F("fhInvMassRec","fhInvMassRec",800,2.,6.);
301 fhInvMassRec->GetXaxis()->SetTitle("(He3,#pi) InvMass");
302 fListHistCascade->Add(fhInvMassRec);
306 fhInvMassRec1=new TH1F("fhInvMassRec1","No Altri tagli",800,2.,6.);
307 fhInvMassRec1->GetXaxis()->SetTitle("(He3,#pi) InvMass");
308 fListHistCascade->Add(fhInvMassRec1);
311 fhInvMassRec2=new TH1F("fhInvMassRec2","DCA pi > 0.1",800,2.,6.);
312 fhInvMassRec2->GetXaxis()->SetTitle("(He3,#pi) InvMass");
313 fListHistCascade->Add(fhInvMassRec2);
316 fhInvMassRec3=new TH1F("fhInvMassRec3","DCA He > 0.05",800,2.,6.);
317 fhInvMassRec3->GetXaxis()->SetTitle("(He3,#pi) InvMass");
318 fListHistCascade->Add(fhInvMassRec3);
321 fhInvMassRec4=new TH1F("fhInvMassRec4","DCA tracks < 1 cm",800,2.,6.);
322 fhInvMassRec4->GetXaxis()->SetTitle("(He3,#pi) InvMass");
323 fListHistCascade->Add(fhInvMassRec4);
326 fhInvMassRec5=new TH1F("fhInvMassRec5","Condizione xn+xp",800,2.,6.);
327 fhInvMassRec5->GetXaxis()->SetTitle("(He3,#pi) InvMass");
328 fListHistCascade->Add(fhInvMassRec5);
331 fhInvMassRec6=new TH1F("fhInvMassRec6","Ho fatto V0 ",800,2.,6.);
332 fhInvMassRec6->GetXaxis()->SetTitle("(He3,#pi) InvMass");
333 fListHistCascade->Add(fhInvMassRec6);
336 fhInvMassRec7=new TH1F("fhInvMassRec7","V0+Taglio CPA",800,2.,6.);
337 fhInvMassRec7->GetXaxis()->SetTitle("(He3,#pi) InvMass");
338 fListHistCascade->Add(fhInvMassRec7);
341 if(!fhHeMCRigidity ){
342 fhHeMCRigidity=new TH1F("fhHeMCRigidity","He3 rigidity distribution",200,0,20);
343 fhHeMCRigidity->GetXaxis()->SetTitle("He3 rigidity");
344 fListHistCascade->Add(fhHeMCRigidity);
347 fhPioneMC=new TH1F("hPioneMC","Pion mom distribution",200,0,50);
348 fhPioneMC->GetXaxis()->SetTitle("Pion momentum");
349 fListHistCascade->Add(fhPioneMC);
353 hBBTPCnoCuts=new TH2F("hBBTPCnoCuts","scatterPlot TPC no cuts",2000,-10,10,1000,0,3000);
354 hBBTPCnoCuts->GetXaxis()->SetTitle("p/Z (GeV/#it{c})");
355 hBBTPCnoCuts->GetYaxis()->SetTitle("TPC Signal (a.u)");
356 fListHistCascade->Add(hBBTPCnoCuts);
359 fhBBTPC=new TH2F("fhBBTPC","scatterPlot TPC",2000,-10,10,1000,0,3000);
360 fhBBTPC->GetXaxis()->SetTitle("p/Z (GeV/#it{c})");
361 fhBBTPC->GetYaxis()->SetTitle("TPC Signal (a.u)");
362 fListHistCascade->Add(fhBBTPC);
364 if(!fhBBTPCNegativePions ){
365 fhBBTPCNegativePions=new TH2F("fhBBTPCNegativePions","scatterPlot Neg Pions",2000,-10,10,1000,0,3000);
366 fhBBTPCNegativePions->GetXaxis()->SetTitle("p/Z (GeV/#it{c})");
367 fhBBTPCNegativePions->GetYaxis()->SetTitle("TPC Signal (a.u)");
368 fListHistCascade->Add(fhBBTPCNegativePions);
370 if(!fhBBTPCPositivePions ){
371 fhBBTPCPositivePions=new TH2F("fhBBTPCPositivePions","scatterPlot Pos Pions",2000,-10,10,1000,0,3000);
372 fhBBTPCPositivePions->GetXaxis()->SetTitle("p/Z (GeV/#it{c})");
373 fhBBTPCPositivePions->GetYaxis()->SetTitle("TPC Signal (a.u)");
374 fListHistCascade->Add(fhBBTPCPositivePions);
377 fhBBTPCHe3=new TH2F("fhBBTPCHe3","scatterPlot TPC - He3",2000,-10,10,1000,0,3000);
378 fhBBTPCHe3->GetXaxis()->SetTitle("p/Z (GeV/#it{c})");
379 fhBBTPCHe3->GetYaxis()->SetTitle("TPC Signal (a.u)");
380 fListHistCascade->Add(fhBBTPCHe3);
383 fHistProvaDCA=new TH2F("fHistProvaDCA","fHistProvaDCA",1000,-50,50,1000,0,100);
384 fHistProvaDCA->GetXaxis()->SetTitle("xn+xp");
385 fHistProvaDCA->GetYaxis()->SetTitle("dca tracks");
386 fListHistCascade->Add(fHistProvaDCA);
389 if(!hITSClusterMap ){
390 hITSClusterMap=new TH1F("hITSClusterMap","hITSClusterMap",65,-1,64);
391 fListHistCascade->Add(hITSClusterMap);
394 if(!fHistPercentileVsTrackNumber){
395 fHistPercentileVsTrackNumber=new TH2F("fHistPercentileVsTrackNumber","fHistPercentileVsTrackNumber",120,-3,117,2500,0,25000);
396 fHistPercentileVsTrackNumber->GetXaxis()->SetTitle("Percentile");
397 fHistPercentileVsTrackNumber->GetYaxis()->SetTitle("Tracks Number");
398 fListHistCascade->Add(fHistPercentileVsTrackNumber);
402 fhHeDCAXY=new TH1F("fhHeDCAXY","fhHeDCAXY",800,-4,4);
403 fListHistCascade->Add(fhHeDCAXY);
406 fhHeDCAZ=new TH1F("fhHeDCAZ","fhHeDCAZ",800,-30,30);
407 fListHistCascade->Add(fhHeDCAZ);
410 fhPiDCAXY=new TH1F("fhPiDCAXY","fhPiDCAXY",800,-4,4);
411 fListHistCascade->Add(fhPiDCAXY);
414 fhPiDCAZ=new TH1F("fhPiDCAZ","fhPiDCAZ",800,-30,30);
415 fListHistCascade->Add(fhPiDCAZ);
419 fNtuple1 = new TNtuple("fNtuple1","Ntuple1","runNumber:evNumber:TrackNumber:percentile:xPrimaryVertex:yPrimaryVertex:zPrimaryVertex:xSecondaryVertex:ySecondaryVertex:zSecondaryVertex:dcaTracks:CosPointingAngle:DCAV0toPrimaryVertex:HeSign:HepInTPC:HeTPCsignal:DcaHeToPrimVertex:HeEta:momHex:momHey:momHez:momHeAtSVx:momHeAtSVy:momHeAtSVz:HeTPCNcls:HeimpactXY:HeimpactZ:isTOFHe:HeBeta:HeITSClusterMap:IsHeITSRefit:PionSign:PionpInTPC:PionTPCsignal:DcaPionToPrimVertex:PionEta:momPionx:momPiony:momPionz:momNegPionAtSVx:momNegPionAtSVy:momNegPionAtSVz:PionTPCNcls:PionimpactXY:PionimpactZ:isTOFPion:PionBeta:PionITSClusterMap:IsPiITSRefit:PDGCodeNeg:PDCCodePos:motherPDGNeg:motherPDGPos:labelPi:labelHe:mumidNeg:mumidPos");
421 fListHistCascade->Add(fNtuple1);
426 fNtuple2 = new TNtuple("fNtuple2","Ntuple2","run:event:iMC:Centrality:PVx:PVy:PVz:PDGcodeMum:MotherIndex:SVxD0:SVyD0:SVzD0:SVxD1:SVyD1:SVzD1:SV3d:EtaMum:YMum:ThetaMum:PhiMum:PxMum:PyMum:PzMum:PdgDaughter0:PdgDaughter1:PxD0:PyD0:PzD0:PxD1:PyD1:PzD1");
428 fListHistCascade->Add(fNtuple2);
431 PostData(1,fListHistCascade);
433 }// end UserCreateOutputObjects
437 //====================== USER EXEC ========================
439 void AliAnalysisTaskHelium3PiMC::UserExec(Option_t *)
441 //_______________________________________________________________________
443 //!*********************!//
444 //! Define variables !//
445 //!*********************!//
447 for(Int_t i=0;i<60;i++) vett1[i]=0;
450 for(Int_t i=0;i<40;i++) vett2[i]=0;
452 Double_t ITSsample[4];
453 for(Int_t i=0;i<4;i++)ITSsample[i]=0;
455 Double_t ITSsamplePos[4];
456 for(Int_t i=0;i<4;i++)ITSsamplePos[i]=0;
458 Double_t ITSsampleNeg[4];
459 for(Int_t i=0;i<4;i++)ITSsampleNeg[i]=0;
461 Double_t pinTPC=0.,poutTPC=0.,TPCSignal=0.;
462 Double_t xPrimaryVertex=0.,yPrimaryVertex=0.,zPrimaryVertex=0.;
468 Bool_t isTPC=kFALSE,isTOF=kFALSE,isTOFHe3=kFALSE,isTOFPi=kFALSE;
470 Double_t fPos[3]={0.,0.,0.};
471 Double_t runNumber=0.;
472 Double_t evNumber=0.;
474 Int_t id0 = 0, id1 = 0;
475 Double_t mcDecayPosXD0 = 0, mcDecayPosYD0 = 0, mcDecayPosR = 0, mcDecayPosZD0 =0, mcDecayPosRho=0.;
476 Double_t mcDecayPosXD1 = 0, mcDecayPosYD1 = 0, mcDecayPosZD1 =0;
478 Double_t lEtaCurrentPart =0., lPtCurrentPart = 0.,lThetaCurrentPart = 0., lPhiCurrentPart = 0.;
479 Int_t iCurrentMother = 0;
480 Double_t mcPosX = 0., mcPosY = 0.,mcPosZ = 0., mcPosR = 0.;
482 Double_t lPdgCurrentDaughter0 = 0, lPdgCurrentDaughter1= 0., lPdgCurrentMother=0.,lPdgCurrentDaughter =0;
484 Double_t PxD0 = 0, PyD0 = 0,PzD0 = 0;
485 Double_t PxD1 = 0, PyD1 = 0,PzD1 = 0;
487 Int_t lNbMCPrimary = 0;
489 Int_t lPdgcodeCurrentPart = 0;
490 //!----------------------------------------------------------------
492 //! A set of very loose parameters for cuts
494 Double_t fgChi2max=33.; //! max chi2
495 Double_t fgDNmin=0.05; //! min imp parameter for the 1st daughter = 500um
496 Double_t fgDCAmax=1.; //! max DCA between the daughter tracks in cm
497 Double_t fgCPAmin=0.9; //! min cosine of V0's pointing angle
498 Double_t fgRmin=0.1; //! min radius of the fiducial volume = 1 mm
499 Double_t fgRmax=200.; //! max radius of the fiducial volume = 2 m
501 //------------------------------------------
502 // create pointer to event
504 AliVEvent *event = InputEvent();
505 if (!event) { Printf("ERROR: Could not retrieve event"); return; }
509 // AliVEvent *lESDevent = InputEvent();
511 // Printf("ERROR: Could not retrieve event");
515 Info("AliAnalysisTaskHelium3PiMC","Starting UserExec");
520 if(fDataType == "SIM") {
523 // Called for EACH event
524 AliMCEvent *mcEvent = MCEvent();
526 Printf("ERROR: Could not retrieve MC event");
530 Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
532 // set up a stack for use in check for primary/stable particles
533 stack = mcEvent->Stack();
534 if( !stack ) { Printf( "Stack not available"); return; }
538 AliESDEvent *lESDevent = 0x0;
540 //********************************** Connect to the InputEvent ******//
542 //Int_t TrackNumber = 0;
543 if(fAnalysisType == "ESD"){
544 lESDevent = dynamic_cast<AliESDEvent*>(event);
546 Printf("ERROR: lESDevent not available \n");
551 //*****************//
553 //*****************//
555 AliCentrality *centrality = lESDevent->GetCentrality();
557 Float_t percentile=centrality->GetCentralityPercentile("V0M");
559 //------------------------------
561 runNumber = lESDevent->GetRunNumber();
562 evNumber =lESDevent->GetEventNumberInFile();
564 //---------------------
566 // Int_t primary = stack->GetNprimary();
569 lNbMCPrimary = stack->GetNprimary();
570 lNbMCPart = stack->GetNtrack();
572 fHistMCMultiplicityTracks->Fill(lNbMCPart); //histo
574 TArrayD MomPionsMC(lNbMCPart); //Neg pions
576 TArrayD MomHeMC(lNbMCPart); //helium3
579 //------ Trimomento pion
580 TArrayD PxPionsMC(lNbMCPart);
582 TArrayD PyPionsMC(lNbMCPart);
584 TArrayD PzPionsMC(lNbMCPart);
586 //------ Trimomento He
587 TArrayD PxHeMC(lNbMCPart);
589 TArrayD PyHeMC(lNbMCPart);
591 TArrayD PzHeMC(lNbMCPart);
596 Double_t Helium3Mass = 2.80839;
597 Double_t PionMass = 0.13957;
599 TLorentzVector vPionMC,vHeliumMC,vSumMC;
600 TLorentzVector vPionMum,vHeliumMum,vSumMum;
601 TLorentzVector vPionRec,vHeliumRec,vSumRec;
602 Bool_t isTwoBody=kFALSE;
604 for (Int_t iMC=0; iMC<stack->GetNtrack(); iMC++)
606 TParticle *p0 = stack->Particle(iMC);
609 //Printf("ERROR: particle with label %d not found in stack (mc loop)", iMc);
613 lPdgcodeCurrentPart = p0->GetPdgCode();
615 if(lPdgcodeCurrentPart == 1000020030 || lPdgcodeCurrentPart == -1000020030 ){
617 MomHeMC[nHeMC++]=p0->P();
619 PxHeMC[nPxHeMC++]=p0->Px();
620 PyHeMC[nPyHeMC++]=p0->Py();
621 PzHeMC[nPzHeMC++]=p0->Pz();
623 fhHeMCRigidity->Fill(p0->P()/2);
626 if(lPdgcodeCurrentPart == 211 || lPdgcodeCurrentPart == -211 ){
628 MomPionsMC[nPionsMC++]=p0->P();
630 PxPionsMC[nPxPionsMC++]=p0->Px();
631 PyPionsMC[nPyPionsMC++]=p0->Py();
632 PzPionsMC[nPzPionsMC++]=p0->Pz();
634 fhPioneMC->Fill(p0->P());
637 if ( lPdgcodeCurrentPart == 1010010030 || lPdgcodeCurrentPart == -1010010030 ){
639 lEtaCurrentPart = p0->Eta();
640 lPtCurrentPart = p0->Pt();
641 lThetaCurrentPart = p0->Theta();
642 lPhiCurrentPart = p0->Phi();
643 iCurrentMother = p0->GetFirstMother();
645 fHistMCEta->Fill(lEtaCurrentPart);
646 fHistMCPt->Fill(lPtCurrentPart);
647 fHistMCTheta->Fill(lThetaCurrentPart);
649 if (iCurrentMother == -1){lPdgCurrentMother=0; } else {lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();}
654 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
658 for(Int_t i=p0->GetFirstDaughter(); i<= p0->GetLastDaughter(); i++){
659 TParticle *pDaughter = stack->Particle(i);
660 lPdgCurrentDaughter= pDaughter->GetPdgCode();
661 cout<<lPdgCurrentDaughter<<endl;
662 if(lPdgCurrentDaughter == 1000020030 || lPdgCurrentDaughter ==-1000020030 ){
670 for(Int_t i=p0->GetFirstDaughter(); i<= p0->GetLastDaughter(); i++){
672 TParticle *pDaughter = stack->Particle(i);
674 lPdgCurrentDaughter= pDaughter->GetPdgCode();
676 if(lPdgCurrentDaughter == 211 || lPdgCurrentDaughter == -211 ){
680 if(lPdgCurrentDaughter == 1000020030 || lPdgCurrentDaughter == -1000020030 ){
685 TParticle *pDaughter0 = stack->Particle(id0);
686 TParticle *pDaughter1 = stack->Particle(id1);
687 lPdgCurrentDaughter0 = pDaughter0->GetPdgCode();
688 lPdgCurrentDaughter1 = pDaughter1->GetPdgCode();
690 // Decay Radius and Production Radius
692 if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
694 lPdgCurrentDaughter0 = pDaughter0->GetPdgCode();
695 lPdgCurrentDaughter1 = pDaughter1->GetPdgCode();
697 PxD0 = pDaughter0->Px();
698 PyD0 = pDaughter0->Py();
699 PzD0 = pDaughter0->Pz();
701 PxD1 = pDaughter1->Px();
702 PyD1 = pDaughter1->Py();
703 PzD1 = pDaughter1->Pz();
705 mcDecayPosXD0 = pDaughter0->Vx();
706 mcDecayPosYD0 = pDaughter0->Vy();
707 mcDecayPosZD0 = pDaughter0->Vz();
709 mcDecayPosXD1 = pDaughter0->Vx();
710 mcDecayPosYD1 = pDaughter0->Vy();
711 mcDecayPosZD1 = pDaughter0->Vz();
713 mcDecayPosR = TMath::Sqrt(mcDecayPosXD0*mcDecayPosXD0+mcDecayPosYD0*mcDecayPosYD0);
714 fHistMCDecayPosition->Fill(mcDecayPosR);
716 mcDecayPosRho = TMath::Sqrt(mcDecayPosXD0*mcDecayPosXD0+mcDecayPosYD0*mcDecayPosYD0+mcDecayPosZD0*mcDecayPosZD0);
717 fHistMCDecayRho->Fill(mcDecayPosRho);
719 //---- Initial mass Test
721 vHeliumMum.SetXYZM(PxD1,PyD1,PzD1,Helium3Mass);
722 vPionMum.SetXYZM(PxD0,PyD0,PzD0,PionMass);
723 vSumMum=vHeliumMum+vPionMum;
725 fhInvMassMum->Fill(vSumMum.M());
727 //Ntupla hyper triton
729 vett2[0]=(Float_t)lESDevent->GetRunNumber();
730 vett2[1]=(Float_t)lESDevent->GetEventNumberInFile();
731 vett2[2]=(Float_t)iMC;
732 vett2[3]=(Float_t)percentile;
733 vett2[4]=(Float_t)mcPosX;
734 vett2[5]=(Float_t)mcPosY;
735 vett2[6]=(Float_t)mcPosZ;
736 vett2[7]=(Float_t)lPdgcodeCurrentPart;
737 vett2[8]=(Float_t)iCurrentMother;
738 vett2[9]=(Float_t)mcDecayPosXD0;
739 vett2[10]=(Float_t)mcDecayPosYD0;
740 vett2[11]=(Float_t)mcDecayPosZD0;
741 vett2[12]=(Float_t)mcDecayPosXD1;
742 vett2[13]=(Float_t)mcDecayPosYD1;
743 vett2[14]=(Float_t)mcDecayPosZD1;
744 vett2[15]=(Float_t)mcDecayPosRho;
745 vett2[16]=(Float_t)lEtaCurrentPart;
746 vett2[17]=(Float_t)p0->Y();
747 vett2[18]=(Float_t)lThetaCurrentPart;
748 vett2[19]=(Float_t)lPhiCurrentPart;
749 vett2[20]=(Float_t)p0->Px();
750 vett2[21]=(Float_t)p0->Py();
751 vett2[22]=(Float_t)p0->Pz();
752 vett2[23]=(Float_t)lPdgCurrentDaughter0;
753 vett2[24]=(Float_t)lPdgCurrentDaughter1;
754 vett2[25]=(Float_t)PxD0; //pion
755 vett2[26]=(Float_t)PyD0;
756 vett2[27]=(Float_t)PzD0;
757 vett2[28]=(Float_t)PxD1; //He3
758 vett2[29]=(Float_t)PyD1;
759 vett2[30]=(Float_t)PzD1;
761 fNtuple2->Fill(vett2);
763 }//if check daughters index
766 } // Kinetic Track loop ends here
768 // Loop phase - space
771 Double_t PionMomMC=0;
772 Double_t PxHeMc=0, PyHeMc=0,PzHeMc=0;
773 Double_t PxPionMc=0, PyPionMc=0,PzPionMc=0;
775 for(Int_t l=0; l < nHeMC; l++){
783 for(Int_t k=0; k < nPionsMC; k++){
785 PionMomMC=MomPionsMC[k];
787 PxPionMc=PxPionsMC[k];
788 PyPionMc=PyPionsMC[k];
789 PzPionMc=PzPionsMC[k];
791 fhRigidityHevsMomPiMC->Fill(HeMomMC/2,PionMomMC);
793 vHeliumMC.SetXYZM(PxHeMc,PyHeMc,PzHeMc,Helium3Mass);
794 vPionMC.SetXYZM(PxPionMc,PyPionMc,PzPionMc,PionMass);
795 vSumMC=vHeliumMC+vPionMC;
797 fhInvMassMC->Fill(vSumMC.M());
801 } // end loop phase space
803 //-------------- RECONSTRUCTION -------------------
805 fHistEventMultiplicity->Fill(0);
807 Double_t lMagneticField=lESDevent->GetMagneticField();
809 Int_t TrackNumber = -1;
811 // ANALISYS reconstructed tracks
813 // Primary vertex cut
815 const AliESDVertex *vtx = lESDevent->GetPrimaryVertexTracks();
817 if(vtx->GetNContributors()<1) {
820 vtx = lESDevent->GetPrimaryVertexSPD();
822 if(vtx->GetNContributors()<1) {
823 Info("AliAnalysisTaskHelium3PiMC","No good vertex, skip event");
824 return; // NO GOOD VERTEX, SKIP EVENT
828 fHistEventMultiplicity->Fill(1); // analyzed events with PV
830 xPrimaryVertex=vtx->GetXv();
831 yPrimaryVertex=vtx->GetYv();
832 zPrimaryVertex=vtx->GetZv();
834 TrackNumber = lESDevent->GetNumberOfTracks();
835 fHistTrackMultiplicity->Fill(TrackNumber); //tracce per evento
837 fHistPercentileVsTrackNumber->Fill(percentile,TrackNumber);
839 if (TrackNumber<2) return;
841 fHistEventMultiplicity->Fill(2);
843 //Find Pair candidates
845 TArrayI PionsTPC(TrackNumber); //Neg pions
848 TArrayI HeTPC(TrackNumber); //helium3
851 // find pairs candidates phase daughter tracks rec
853 TArrayD MomPionsRec(TrackNumber); //Neg pions
856 TArrayD MomHeRec(TrackNumber); //helium3
859 //------ Trimomento pion
860 TArrayD PxPionsRec(TrackNumber);
862 TArrayD PyPionsRec(TrackNumber);
864 TArrayD PzPionsRec(TrackNumber);
867 //------ Trimomento He
868 TArrayD PxHeRec(TrackNumber);
870 TArrayD PyHeRec(TrackNumber);
872 TArrayD PzHeRec(TrackNumber);
875 Float_t impactXY=-999, impactZ=-999;
876 Float_t impactXYpi=-999, impactZpi=-999;
880 Int_t motherPDGNeg=0;
881 Int_t motherPDGPos=0;
891 // ******************* Track Cuts Definitions ********************//
895 AliESDtrackCuts* esdtrackCutsITS = new AliESDtrackCuts("esdtrackCutsITS");
896 esdtrackCutsITS->SetRequireITSStandAlone(kFALSE);
897 esdtrackCutsITS->SetRequireITSPureStandAlone(kFALSE);
902 Double_t maxchi2perTPCcl=5.;
904 AliESDtrackCuts* esdtrackCutsTPC = new AliESDtrackCuts("esdtrackCutsTPC");
905 esdtrackCutsTPC->SetRequireTPCRefit(kTRUE);
906 esdtrackCutsTPC->SetAcceptKinkDaughters(kFALSE);
907 esdtrackCutsTPC->SetMinNClustersTPC(minclsTPC);
908 esdtrackCutsTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
910 //*************************************************************
912 for (Int_t j=0; j<TrackNumber; j++) { //loop on tracks
914 AliESDtrack *esdtrack=lESDevent->GetTrack(j);
917 AliError(Form("ERROR: Could not retrieve esdtrack %d",j));
921 hBBTPCnoCuts->Fill(esdtrack->GetSign()*esdtrack->P(),esdtrack->GetTPCsignal());
923 // ************** Track cuts ****************
925 status = (ULong_t)esdtrack->GetStatus();
927 isTPC = (((status) & (AliESDtrack::kTPCin)) != 0);
928 isTOF = ((((status) & (AliESDtrack::kTOFout)) != 0) && (((status) & (AliESDtrack::kTIME)) != 0));
930 Bool_t IsTrackAcceptedTPC = esdtrackCutsTPC->AcceptTrack(esdtrack);
931 Bool_t IsTrackAcceptedITS = esdtrackCutsITS->AcceptTrack(esdtrack);
933 if (!(IsTrackAcceptedTPC && IsTrackAcceptedITS)) continue;
935 //----------------------------------------------
937 //****** Cuts from AliV0Vertex.cxx *************
939 Double_t d=esdtrack->GetD(xPrimaryVertex,yPrimaryVertex,lMagneticField);
940 // if (TMath::Abs(d)<fgDPmin) continue;
941 if (TMath::Abs(d)>fgRmax) continue;
943 //---- (Usefull) Stuff
945 TPCSignal=esdtrack->GetTPCsignal();
947 if (TPCSignal<10)continue;
951 if(!esdtrack->GetTPCInnerParam())continue;
953 AliExternalTrackParam trackIn(*esdtrack->GetInnerParam());
954 pinTPC = trackIn.GetP();
958 fhBBTPC->Fill(pinTPC*esdtrack->GetSign(),TPCSignal);
960 d=esdtrack->GetD(xPrimaryVertex,yPrimaryVertex,lMagneticField);
961 // if (TMath::Abs(d)<fgDPmin) continue;
962 if (TMath::Abs(d)>fgRmax) continue;
964 label = TMath::Abs(esdtrack->GetLabel());
966 if (label>=10000000) {
967 // Underlying event. 10000000 is the
968 // value of fkMASKSTEP in AliRunDigitizer
969 cout <<"Strange, there should be no underlying event"<<endl;
973 if (label>=lNbMCPart) {
974 cout <<"Strange, label outside the range"<< endl;
979 TParticle * part = stack->Particle(label);
981 Int_t PDGCode=part->GetPdgCode();
982 Int_t mumid = part->GetFirstMother();
985 TParticle *mother=(TParticle*)stack->Particle(mumid);
986 mumpdg = mother->GetPdgCode();
990 fhBBTPCNegativePions->Fill(esdtrack->GetSign()*esdtrack->P(),esdtrack->GetTPCsignal());
993 fhBBTPCPositivePions->Fill(esdtrack->GetSign()*esdtrack->P(),esdtrack->GetTPCsignal());
996 // if(PDGCode == 211){
998 if(PDGCode==-211 || PDGCode==+211){
1000 PionsTPC[nPionsTPC++]=j;
1002 esdtrack->GetImpactParameters(impactXY, impactZ);
1003 fhPiDCAXY->Fill(impactXY);
1004 fhPiDCAZ->Fill(impactZ);
1006 MomPionsRec[nPionsRec++]=esdtrack->P();
1008 PxPionsRec[nPxPionsRec++]=esdtrack->Px();
1009 PyPionsRec[nPyPionsRec++]=esdtrack->Py();
1010 PzPionsRec[nPzPionsRec++]=esdtrack->Pz();
1014 if(PDGCode==1000020030 ||PDGCode==-1000020030 ){
1019 fhBBTPCHe3->Fill(esdtrack->GetSign()*esdtrack->P(),esdtrack->GetTPCsignal());
1021 esdtrack->GetImpactParameters(impactXY, impactZ);
1022 fhHeDCAXY->Fill(impactXY);
1023 fhHeDCAZ->Fill(impactZ);
1025 MomHeRec[nHeRec++]=esdtrack->P();
1027 PxHeRec[nPxHeRec++]=esdtrack->Px();
1028 PyHeRec[nPyHeRec++]=esdtrack->Py();
1029 PzHeRec[nPzHeRec++]=esdtrack->Pz();
1035 //-------------- LOOP pairs 1 -------------
1036 // Fill phase space and inva mass before cuts
1038 Double_t HeMomRec =0;
1039 Double_t PionMomRec=0;
1040 Double_t PxHeReco=0, PyHeReco=0,PzHeReco=0;
1041 Double_t PxPionReco=0, PyPionReco=0,PzPionReco=0;
1043 for(Int_t l=0; l < nHeRec; l++){
1045 HeMomRec=MomHeRec[l];
1047 PxHeReco=PxHeRec[l];
1048 PyHeReco=PyHeRec[l];
1049 PzHeReco=PzHeRec[l];
1051 for(Int_t k=0; k < nPionsRec; k++){
1053 PionMomRec=MomPionsRec[k];
1055 PxPionReco=PxPionsRec[k];
1056 PyPionReco=PyPionsRec[k];
1057 PzPionReco=PzPionsRec[k];
1059 fhRigidityHevsMomPiRec->Fill(HeMomRec,PionMomRec);
1061 vHeliumRec.SetXYZM(2*PxHeReco,2*PyHeReco,2*PzHeReco,Helium3Mass);
1062 vPionRec.SetXYZM(PxPionReco,PyPionReco,PzPionReco,PionMass);
1063 vSumRec=vHeliumRec+vPionRec;
1065 fhInvMassRec->Fill(vSumRec.M());
1068 } // fine loop phase space
1070 //--------------- LOOP PAIRS ----------------------//
1072 Double_t DcaHeToPrimVertex=0;
1073 Double_t DcaPionToPrimVertex=0;
1075 impactXY=-999, impactZ=-999;
1076 impactXYpi=-999, impactZpi=-999;
1080 AliESDtrack *PionTrack = 0x0;
1081 AliESDtrack *HeTrack = 0x0;
1083 // Vettori per il PxPyPz
1085 Double_t momPionVett[3];
1086 for(Int_t i=0;i<3;i++)momPionVett[i]=0;
1088 Double_t momHeVett[3];
1089 for(Int_t i=0;i<3;i++)momHeVett[i]=0;
1093 Double_t momPionVettAt[3];
1094 for(Int_t i=0;i<3;i++)momPionVettAt[i]=0;
1096 Double_t momHeVettAt[3];
1097 for(Int_t i=0;i<3;i++)momHeVettAt[i]=0;
1099 Bool_t IsHeITSRefit,IsPiITSRefit ;
1101 //----------- My 2nd Vertex Finder
1103 for (Int_t k=0; k < nPionsTPC; k++) { //! Pions Loop
1105 DcaPionToPrimVertex=0.;
1106 DcaHeToPrimVertex=0;
1108 Int_t PionIdx=PionsTPC[k];
1110 PionTrack=lESDevent->GetTrack(PionIdx);
1112 statusPi = (ULong_t)PionTrack->GetStatus();
1113 IsPiITSRefit = ((statusPi) & (AliESDtrack::kITSrefit));
1115 Int_t labelPi = TMath::Abs(PionTrack->GetLabel());
1116 TParticle * partNeg = stack->Particle(labelPi);
1117 PDGCodeNeg=partNeg->GetPdgCode();
1119 Int_t mumidNeg = partNeg->GetFirstMother();
1121 TParticle *motherNeg=(TParticle*)stack->Particle(mumidNeg);
1122 motherPDGNeg = motherNeg->GetPdgCode();
1126 DcaPionToPrimVertex = TMath::Abs(PionTrack->GetD(xPrimaryVertex, yPrimaryVertex,lMagneticField)); //OK
1128 if(DcaPionToPrimVertex<0.1)continue;
1130 AliExternalTrackParam trackInPion(*PionTrack);
1132 for (Int_t i=0; i<nHeTPC; i++){ //! Helium Loop
1134 Int_t HeIdx=HeTPC[i];
1136 HeTrack=lESDevent->GetTrack(HeIdx);
1138 statusT= (ULong_t)HeTrack->GetStatus();
1139 IsHeITSRefit = ((statusT) & (AliESDtrack::kITSrefit));
1141 Int_t labelHe = TMath::Abs(HeTrack->GetLabel());
1142 TParticle * partPos = stack->Particle(labelHe);
1143 PDGCodePos=partPos->GetPdgCode();
1145 Int_t mumidPos = partPos->GetFirstMother();
1147 TParticle *motherPos=(TParticle*)stack->Particle(mumidPos);
1148 motherPDGPos = motherPos->GetPdgCode();
1152 DcaHeToPrimVertex = TMath::Abs(HeTrack->GetD(xPrimaryVertex, yPrimaryVertex,lMagneticField)); //OK
1154 AliExternalTrackParam trackInHe(*HeTrack);
1156 HeTrack->PxPyPz(momHeVett);
1157 PionTrack->PxPyPz(momPionVett);
1159 vHeliumRec.SetXYZM(2*momHeVett[0],2*momHeVett[1],2*momHeVett[2],Helium3Mass);
1160 vPionRec.SetXYZM(momPionVett[0],momPionVett[1],momPionVett[2],PionMass);
1161 vSumRec=vHeliumRec+vPionRec;
1163 fhInvMassRec1->Fill(vSumRec.M());
1165 fhInvMassRec2->Fill(vSumRec.M());
1167 if ( DcaPionToPrimVertex < fgDNmin) //OK
1168 if ( DcaHeToPrimVertex < fgDNmin) continue; //OK
1170 fhInvMassRec3->Fill(vSumRec.M());
1175 dca= PionTrack->GetDCA(HeTrack,lMagneticField,xn,xp); //!distance between two tracks (Neg to Pos)
1176 fHistProvaDCA->Fill(xn-xp,dca);
1177 if (dca > fgDCAmax) continue;
1179 fhInvMassRec4->Fill(vSumRec.M());
1181 if ((xn+xp) > 2*fgRmax) continue;
1182 if ((xn+xp) < 2*fgRmin) continue;
1183 fhInvMassRec5->Fill(vSumRec.M());
1185 //CORREZIONE da AliV0Vertex
1187 Bool_t corrected=kFALSE;
1188 if ((trackInPion.GetX() > 3.) && (xn < 3.)) {
1189 //correct for the beam pipe material
1192 if ((trackInHe.GetX() > 3.) && (xp < 3.)) {
1193 //correct for the beam pipe material
1197 dca=trackInPion.GetDCA(&trackInHe,lMagneticField,xn,xp);
1198 if (dca > fgDCAmax) continue;
1199 if ((xn+xp) > 2*fgRmax) continue;
1200 if ((xn+xp) < 2*fgRmin) continue;
1203 //=============================================//
1204 // Make a "V0" with Tracks //
1205 //=============================================//
1207 trackInPion.PropagateTo(xn,lMagneticField);
1208 trackInHe.PropagateTo(xp,lMagneticField);
1210 AliESDv0 vertex(trackInPion,PionIdx,trackInHe,HeIdx);
1211 if (vertex.GetChi2V0() > fgChi2max) continue;
1212 fhInvMassRec6->Fill(vSumRec.M());
1214 Float_t CosPointingAngle=vertex.GetV0CosineOfPointingAngle(xPrimaryVertex,yPrimaryVertex,zPrimaryVertex); //PointingAngle
1215 if (CosPointingAngle < fgCPAmin) continue;
1217 fhInvMassRec7->Fill(vSumRec.M());
1219 vertex.SetDcaV0Daughters(dca);
1220 vertex.SetV0CosineOfPointingAngle(CosPointingAngle);
1222 fPos[0]=vertex.Xv();
1223 fPos[1]=vertex.Yv();
1224 fPos[2]=vertex.Zv();
1228 Double_t raggio=TMath::Sqrt(fPos[0]*fPos[0]+fPos[1]*fPos[1]+fPos[2]*fPos[2]);
1229 HeTrack->GetPxPyPzAt(raggio,lMagneticField,momHeVettAt);
1230 PionTrack->GetPxPyPzAt(raggio,lMagneticField,momPionVettAt);
1232 //------------------------------------------------------------------------//
1234 HeTrack->GetImpactParameters(impactXY, impactZ);
1236 PionTrack->GetImpactParameters(impactXYpi, impactZpi);
1238 Float_t timeTOFHe= HeTrack->GetTOFsignal(); // ps
1239 Float_t trackLenghtTOFHe= HeTrack->GetIntegratedLength(); // cm
1241 Float_t timeTOFPi= PionTrack->GetTOFsignal(); // ps
1242 Float_t trackLenghtTOFPi= PionTrack->GetIntegratedLength(); // cm
1244 //----------------------------------------------------------------------//
1246 vett1[0]=(Float_t)runNumber;
1247 vett1[1]=(Float_t)evNumber;
1248 vett1[2]=(Float_t)lNbMCPart;
1249 vett1[3]=(Float_t)percentile;
1250 vett1[4]=(Float_t)xPrimaryVertex; //PRIMARY
1251 vett1[5]=(Float_t)yPrimaryVertex;
1252 vett1[6]=(Float_t)zPrimaryVertex;
1253 vett1[7]=(Float_t)fPos[0]; //SECONDARY
1254 vett1[8]=(Float_t)fPos[1];
1255 vett1[9]=(Float_t)fPos[2];
1256 vett1[10]=(Float_t)dca; //between 2 tracks
1257 vett1[11]=(Float_t)CosPointingAngle; //cosPointingAngle da V0
1258 vett1[12]=(Float_t)vertex.GetD(xPrimaryVertex,yPrimaryVertex,zPrimaryVertex);
1259 vett1[13]=(Float_t)HeTrack->GetSign(); //He
1260 vett1[14]=(Float_t)trackInHe.GetP();
1261 vett1[15]=(Float_t)HeTrack->GetTPCsignal();
1262 vett1[16]=(Float_t)DcaHeToPrimVertex;
1263 vett1[17]=(Float_t)HeTrack->Eta();
1264 vett1[18]=(Float_t)momHeVett[0];
1265 vett1[19]=(Float_t)momHeVett[1];
1266 vett1[20]=(Float_t)momHeVett[2];
1267 vett1[21]=(Float_t)momHeVettAt[0];
1268 vett1[22]=(Float_t)momHeVettAt[1];
1269 vett1[23]=(Float_t)momHeVettAt[2];
1270 vett1[24]=(Float_t)HeTrack->GetTPCNcls();
1271 vett1[25]=(Float_t)impactXY;
1272 vett1[26]=(Float_t)impactZ;
1273 vett1[27]=(Float_t)isTOFHe3;
1274 vett1[28]=(Float_t)(trackLenghtTOFHe/timeTOFHe)/2.99792458e-2;
1275 vett1[29]=(Float_t)HeTrack->GetITSClusterMap();
1276 vett1[30]=(Float_t)IsHeITSRefit;
1277 vett1[31]=(Float_t)PionTrack->GetSign(); //Pion
1278 vett1[32]=(Float_t)trackInPion.GetP();
1279 vett1[33]=(Float_t)PionTrack->GetTPCsignal();
1280 vett1[34]=(Float_t)DcaPionToPrimVertex;
1281 vett1[35]=(Float_t)PionTrack->Eta();
1282 vett1[36]=(Float_t)momPionVett[0];
1283 vett1[37]=(Float_t)momPionVett[1];
1284 vett1[38]=(Float_t)momPionVett[2];
1285 vett1[39]=(Float_t)momPionVettAt[0];
1286 vett1[40]=(Float_t)momPionVettAt[1];
1287 vett1[41]=(Float_t)momPionVettAt[2];
1288 vett1[42]=(Float_t)PionTrack->GetTPCNcls();
1289 vett1[43]=(Float_t)impactXYpi;
1290 vett1[44]=(Float_t)impactZpi;
1291 vett1[45]=(Float_t)isTOFPi;
1292 vett1[46]=(Float_t)(trackLenghtTOFPi/timeTOFPi)/2.99792458e-2;
1293 vett1[47]=(Float_t)PionTrack->GetITSClusterMap();
1294 vett1[48]=(Float_t)IsPiITSRefit;
1295 vett1[49]=(Float_t)PDGCodeNeg;
1296 vett1[50]=(Float_t)PDGCodePos;
1297 vett1[51]=(Float_t)motherPDGNeg;
1298 vett1[52]=(Float_t)motherPDGPos;
1299 vett1[53]=(Float_t)labelPi;
1300 vett1[54]=(Float_t)labelHe;
1301 vett1[55]=(Float_t)mumidNeg;
1302 vett1[56]=(Float_t)mumidPos;
1304 fNtuple1->Fill(vett1);
1310 PostData(1,fListHistCascade);
1315 //________________________________________________________________________
1317 void AliAnalysisTaskHelium3PiMC::Terminate(Option_t *)
1319 // Draw result to the screen
1320 // Called once at the end of the query