31 #include "TProfile2D.h" 33 #include "TStopwatch.h" 38 #include "AliAnalysisManager.h" 39 #include "AliInputEventHandler.h" 41 #include "AliVVertex.h" 42 #include "AliVVZERO.h" 44 #include "AliMCEvent.h" 46 #include "AliESDEvent.h" 47 #include "AliESDtrack.h" 48 #include "AliESDVertex.h" 50 #include "AliESDtrackCuts.h" 52 #include "AliAODEvent.h" 53 #include "AliAODTrack.h" 54 #include "AliAODVertex.h" 56 #include "AliAODTracklets.h" 57 #include "AliAODHeader.h" 59 #include "AliAODMCHeader.h" 60 #include "AliAODMCParticle.h" 61 #include "TClonesArray.h" 62 #include "TDatabasePDG.h" 63 #include "TParticlePDG.h" 66 #include "TObjArray.h" 95 fAddPiToMCReactionPlane(kTRUE),
98 fSkipSelection(kFALSE),
103 fExtraEventRejection(kFALSE),
104 fSkipCentralitySelection(kFALSE),
105 fCentMethod("V0MTRK"),
118 fExcludeTPCEdges(kFALSE),
153 fSkipTerminate(kTRUE),
173 fDecayDCAdaughters(0.0),
174 fDecayCosinePointingAngleXY(0.0),
176 fDecayDecayLength(0.0),
177 fDecayDecayLengthLab(0.0),
181 fDecayProductIPXY(0.0),
189 fDecayMatchOrigin(0.0),
193 fDecayMatchRadXY(0.0),
197 fDecayMaxDCAdaughters(0.0),
198 fDecayMinCosinePointingAngleXY(0.0),
200 fDecayAPCutPie(kTRUE),
201 fDecayStopPIDAtPt(3.0),
203 fDecayMaxDecayLength(0.0),
204 fDecayMaxProductIPXY(0.0),
205 fDecayMaxRapidity(0.0),
212 fDaughterNFClsTPC(0),
213 fDaughterNSClsTPC(0),
214 fDaughterChi2PerNClsTPC(0.0),
216 fDaughterImpactParameterXY(0.0),
217 fDaughterImpactParameterZ(0.0),
220 fDaughterNSigmaPID(0.0),
221 fDaughterKinkIndex(0),
222 fDaughterAtSecPhi(0.0),
223 fDaughterAtSecEta(0.0),
224 fDaughterAtSecPt(0.0),
225 fDaughterMatchPhi(0.0),
226 fDaughterMatchEta(0.0),
227 fDaughterMatchPt(0.0),
228 fDaughterMatchImpactParameterXY(0.0),
229 fDaughterMatchImpactParameterZ(0.0),
230 fDaughterUnTag(kTRUE),
231 fDaughterMinEta(0.0),
232 fDaughterMaxEta(0.0),
234 fDaughterMinNClsTPC(0),
235 fDaughterMinNClsITS(-1),
236 fDaughterMinXRows(0),
237 fDaughterMaxChi2PerNClsTPC(0.0),
238 fDaughterMinXRowsOverNClsFTPC(0.0),
239 fDaughterMinImpactParameterXY(0.0),
240 fDaughterMaxNSigmaPID(0.0),
241 fDaughterSPDRequireAny(kFALSE),
242 fDaughterITSrefit(kFALSE) {
244 for(
Int_t i=0; i!=100; ++i) fPtBinEdge[i]=0;
245 for(
Int_t i=0; i!=6; ++i) fDaughterITSConfig[i]=-1;
246 for(
Int_t i=0; i!=2000; ++i) fQTPCA_fID[i]=-1;
247 for(
Int_t i=0; i!=2000; ++i) fQTPCC_fID[i]=-1;
248 for(
Int_t i=0; i!=64; ++i) fVZEextW[i]=1;
265 fAddPiToMCReactionPlane(kTRUE),
268 fSkipSelection(kFALSE),
273 fExtraEventRejection(kFALSE),
274 fSkipCentralitySelection(kFALSE),
275 fCentMethod(
"V0MTRK"),
288 fExcludeTPCEdges(kFALSE),
323 fSkipTerminate(kTRUE),
343 fDecayDCAdaughters(0.0),
344 fDecayCosinePointingAngleXY(0.0),
346 fDecayDecayLength(0.0),
347 fDecayDecayLengthLab(0.0),
351 fDecayProductIPXY(0.0),
359 fDecayMatchOrigin(0.0),
363 fDecayMatchRadXY(0.0),
367 fDecayMaxDCAdaughters(0.0),
368 fDecayMinCosinePointingAngleXY(0.0),
370 fDecayAPCutPie(kTRUE),
371 fDecayStopPIDAtPt(3.0),
373 fDecayMaxDecayLength(0.0),
374 fDecayMaxProductIPXY(0.0),
375 fDecayMaxRapidity(0.0),
382 fDaughterNFClsTPC(0),
383 fDaughterNSClsTPC(0),
384 fDaughterChi2PerNClsTPC(0.0),
386 fDaughterImpactParameterXY(0.0),
387 fDaughterImpactParameterZ(0.0),
390 fDaughterNSigmaPID(0.0),
391 fDaughterKinkIndex(0),
392 fDaughterAtSecPhi(0.0),
393 fDaughterAtSecEta(0.0),
394 fDaughterAtSecPt(0.0),
395 fDaughterMatchPhi(0.0),
396 fDaughterMatchEta(0.0),
397 fDaughterMatchPt(0.0),
398 fDaughterMatchImpactParameterXY(0.0),
399 fDaughterMatchImpactParameterZ(0.0),
400 fDaughterUnTag(kTRUE),
401 fDaughterMinEta(0.0),
402 fDaughterMaxEta(0.0),
404 fDaughterMinNClsTPC(0),
405 fDaughterMinNClsITS(-1),
406 fDaughterMinXRows(0),
407 fDaughterMaxChi2PerNClsTPC(0.0),
408 fDaughterMinXRowsOverNClsFTPC(0.0),
409 fDaughterMinImpactParameterXY(0.0),
410 fDaughterMaxNSigmaPID(0.0),
411 fDaughterSPDRequireAny(kFALSE),
412 fDaughterITSrefit(kFALSE) {
419 DefineInput( 0,TChain::Class());
420 DefineOutput(1,TList::Class());
421 DefineOutput(2,AliFlowEventSimple::Class());
422 DefineOutput(3,AliFlowEventSimple::Class());
439 if(!lst)
return NULL;
450 printf(
"******************************\n");
451 printf(
"<TASK Configuration> %s\n",GetName());
452 printf(
" fDebug %d\n",
fDebug);
459 printf(
" fRunOnpA %s\n",
fRunOnpA?
"kTRUE":
"kFALSE");
460 printf(
" fRunOnpp %s\n",
fRunOnpp?
"kTRUE":
"kFALSE");
461 printf(
" fReadESD %s\n",
fReadESD?
"kTRUE":
"kFALSE");
462 printf(
" fReadMC %s\n",
fReadMC?
"kTRUE":
"kFALSE");
466 printf(
" fAvoidExec %s\n",
fAvoidExec?
"kTRUE":
"kFALSE");
469 printf(
" fVZEsave %s\n",
fVZEsave?
"kTRUE":
"kFALSE");
471 printf(
" fVZEload %d runs\n",
fVZEload->GetEntries());
472 printf(
" fVZEmb %s\n",
fVZEmb?
"kTRUE":
"kFALSE");
473 printf(
" fVZEByDisk %s\n",
fVZEByDisk?
"kTRUE":
"kFALSE");
477 printf(
" fVZECa %d\n",
fVZECa);
478 printf(
" fVZECb %d\n",
fVZECb);
479 printf(
" fVZEAa %d\n",
fVZEAa);
480 printf(
" fVZEAb %d\n",
fVZEAb);
495 printf(
" fSpecie %d\n",
fSpecie);
496 printf(
" fPtBins %d\n |",
fPtBins);
504 printf(
" fSkipVn %s\n",
fSkipVn?
"kTRUE":
"kFALSE");
506 printf(
" fUseFP %s\n",
fUseFP?
"kTRUE":
"kFALSE");
513 printf(
"==================================\n");
514 printf(
"<FlowStrange> \n");
517 printf(
" fOnline %s\n",
fOnline?
"kTRUE":
"kFALSE");
518 printf(
" fHomemade %s\n",
fHomemade?
"kTRUE":
"kFALSE");
566 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
592 tList=
new TList(); tList->SetName(
"ESD_TrkAll"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
593 tList=
new TList(); tList->SetName(
"ESD_TrkSel"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
594 tH2D =
new TH2D(
"NPAIR",
"NPAIR;NPOS;NNEG",1000,0,5000,1000,0,5000); tList->Add(tH2D);
595 tH2D =
new TH2D(
"PtIPXY",
"PtIPXY;Pt;IPxy", 100,0,10,200,-10,+10); tList->Add(tH2D);
599 tH2D =
new TH2D(
"V0SADC",
"V0S AFTER DAUGHTER CUTS;V0ALL;V0IMW",100,0,1000,100,0,1000); tList->Add(tH2D);
600 tList=
new TList(); tList->SetName(
"AllDau"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
603 tList=
new TList(); tList->SetName(
"SelDau"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
606 tList=
new TList(); tList->SetName(
"V0SAllVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
607 tList=
new TList(); tList->SetName(
"V0SSelVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
618 tList=
new TList(); tList->SetName(
"STATMC"); tList->SetOwner();
fList->Add(tList);
619 tH1D =
new TH1D(
"Events",
"Events",5,0.5,5.5); tList->Add(tH1D);
620 tH1D->GetXaxis()->SetBinLabel(1,
"Selected events");
621 tH1D->GetXaxis()->SetBinLabel(2,
"Stack found");
622 tH1D->GetXaxis()->SetBinLabel(3,
"Daughters in stack");
623 tH1D->GetXaxis()->SetBinLabel(4,
"Correspond to decay");
624 tH1D->GetXaxis()->SetBinLabel(5,
"Decay has mother");
626 tList=
new TList(); tList->SetName(
"MthDau"); tList->SetOwner();
AddTrackSpy(tList,
true);
fList->Add(tList);
630 tList=
new TList(); tList->SetName(
"MthNegDau"); tList->SetOwner();
AddTrackSpy(tList,
true);
fList->Add(tList);
631 tList=
new TList(); tList->SetName(
"MthPosDau"); tList->SetOwner();
AddTrackSpy(tList,
true);
fList->Add(tList);
634 tList=
new TList(); tList->SetName(
"UnMthDau"); tList->SetOwner();
AddTrackSpy(tList,
false);
fList->Add(tList);
636 tList=
new TList(); tList->SetName(
"V0SMthVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
637 tList=
new TList(); tList->SetName(
"V0SMthPosPosVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
638 tList=
new TList(); tList->SetName(
"V0SMthNegNegVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
639 tList=
new TList(); tList->SetName(
"V0SMthPosNegVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
640 tList=
new TList(); tList->SetName(
"V0SUnMthVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
650 tQAEvents->SetName(
"Event");
651 tQAEvents->SetOwner();
652 tH1D =
new TH1D(
"Events",
"Number of Events",6,0,6); tQAEvents->Add(tH1D);
653 tH1D->GetXaxis()->SetBinLabel(1,
"exec");
654 tH1D->GetXaxis()->SetBinLabel(2,
"userexec");
655 tH1D->GetXaxis()->SetBinLabel(3,
"reached");
656 tH1D->GetXaxis()->SetBinLabel(4,
"selected");
657 tH1D->GetXaxis()->SetBinLabel(5,
"rejectedByLowQw");
658 tH1D->GetXaxis()->SetBinLabel(6,
"rejectedByErrorLoadVZEcal");
659 tProfile =
new TProfile(
"Configuration",
"Configuration",10,0.5,10.5); tQAEvents->Add(tProfile);
661 tProfile->GetXaxis()->SetBinLabel(
kSpecie,
"fSpecie");
663 tProfile->GetXaxis()->SetBinLabel(
kHarmonic,
"fHarmonic");
665 tProfile->GetXaxis()->SetBinLabel(
kReadMC,
"fReadMC");
667 tProfile->GetXaxis()->SetBinLabel(
kSkipSelection,
"fSkipSelection");
668 tH1D =
new TH1D(
"POI",
"POIs;multiplicity",800,0,800); tQAEvents->Add(tH1D);
669 tH1D =
new TH1D(
"UNTAG",
"UNTAG;Untagged Daughters",800,0,800);tQAEvents->Add(tH1D);
670 tH1D =
new TH1D(
"RealTime",
"RealTime;LogT sec",2000,-10,+10); tQAEvents->Add(tH1D);
671 fList->Add(tQAEvents);
684 tList->SetName(name.Data());
686 tH2D =
new TH2D(
"VTXZ",
"VTXZ;PriVtxZ;SPDVtxZ",60,-25,+25,60,-25,+25); tList->Add( tH2D );
687 tH2D =
new TH2D(
"CCCC",
"CCCC;V0M;TRK",60,-10,110,60,-10,110); tList->Add( tH2D );
688 tH2D =
new TH2D(
"HYBTPC",
"HYBTPC;TPC ONLY;HYBRID",100,0,3000,100,0,3000); tList->Add( tH2D );
689 tH1D =
new TH1D(
"HYBTPCRat",
"HYBTPCRat;TPC/HYB",120,0.2,2.2); tList->Add( tH1D );
690 tH2D =
new TH2D(
"SPDVZE",
"SPDVZE;SPD Tracklets;Total Multiplicity in VZERO",100,0,3500,100,0,25000); tList->Add( tH2D );
691 tH1D =
new TH1D(
"SPDVZERat",
"SPDVZERat;TotalMultiplicityVZERO/SPDTracklets",120,2,+12); tList->Add( tH1D );
693 tH1D =
new TH1D(
"MCEP",
"MCEP;MCEP",100,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
717 tList->SetName(
"MakeQSpy");
720 tH1D =
new TH1D(
"RFPTPC",
"TPC Refrence Multiplicity;multiplicity",3000,0,3000); tList->Add( tH1D );
721 tH1D =
new TH1D(
"RFPVZE",
"VZERO Reference Multiplicity;multiplicity",3000,0,30000); tList->Add( tH1D );
722 tH1D =
new TH1D(
"QmTPC",
"TPC Normalized Q vector;|Q|/#sqrt{M}",360,0,7); tList->Add( tH1D );
723 tH1D =
new TH1D(
"QmVZEA",
"VZEROA Normalized Q vector;|Q|/#sqrt{W}",360,0,7); tList->Add( tH1D );
724 tH1D =
new TH1D(
"QmVZEC",
"VZEROC Normalized Q vector;|Q|/#sqrt{W}",360,0,7); tList->Add( tH1D );
725 tH2D =
new TH2D(
"TPCAllPhiEta",
"TPCall;Phi;Eta",180,0,TMath::TwoPi(),80,-0.9,+0.9); tList->Add( tH2D );
726 tH2D =
new TH2D(
"VZEAllPhiEta",
"VZEall;Phi;Eta",20,0,TMath::TwoPi(),40,-4.0,+6.0); tList->Add( tH2D );
727 tH1D =
new TH1D(
"TPCPSI",
"TPCPSI;PSI",72,0,TMath::Pi()); tList->Add( tH1D );
728 tH1D =
new TH1D(
"TPCPSIA",
"TPCPSIA;PSIA",72,0,TMath::Pi()); tList->Add( tH1D );
729 tH1D =
new TH1D(
"TPCPSIC",
"TPCPSIC;PSIC",72,0,TMath::Pi()); tList->Add( tH1D );
730 tH1D =
new TH1D(
"VZEPSI",
"VZEPSI;PSI",72,0,TMath::Pi()); tList->Add( tH1D );
731 tH1D =
new TH1D(
"VZEPSIA",
"VZEPSIA;PSIA",72,0,TMath::Pi()); tList->Add( tH1D );
732 tH1D =
new TH1D(
"VZEPSIC",
"VZEPSIC;PSIC",72,0,TMath::Pi()); tList->Add( tH1D );
733 tH2D =
new TH2D(
"PSI_TPCAVZEC",
"PSI_TPCAVZEC",72,0,TMath::Pi(),72,0,TMath::Pi()); tList->Add( tH2D );
734 tH2D =
new TH2D(
"PSI_TPCCVZEA",
"PSI_TPCAVZEC",72,0,TMath::Pi(),72,0,TMath::Pi()); tList->Add( tH2D );
735 tH2D =
new TH2D(
"PSI_TPCVZE",
"PSI_TPCVZE",72,0,TMath::Pi(),72,0,TMath::Pi()); tList->Add( tH2D );
736 tPF1 =
new TProfile(
"TPCQm",
"TPCQm",6,0.5,6.5); tList->Add( tPF1 );
737 tPF1->GetXaxis()->SetBinLabel(1,
"Qcy"); tPF1->GetXaxis()->SetBinLabel(2,
"Qcx");
738 tPF1->GetXaxis()->SetBinLabel(3,
"Qay"); tPF1->GetXaxis()->SetBinLabel(4,
"Qax");
739 tPF1->GetXaxis()->SetBinLabel(5,
"Qy"); tPF1->GetXaxis()->SetBinLabel(6,
"Qx");
740 tPF1 =
new TProfile(
"VZEQm",
"VZEQm",6,0.5,6.5); tList->Add( tPF1 );
741 tPF1->GetXaxis()->SetBinLabel(1,
"Qcy"); tPF1->GetXaxis()->SetBinLabel(2,
"Qcx");
742 tPF1->GetXaxis()->SetBinLabel(3,
"Qay"); tPF1->GetXaxis()->SetBinLabel(4,
"Qax");
743 tPF1->GetXaxis()->SetBinLabel(5,
"Qy"); tPF1->GetXaxis()->SetBinLabel(6,
"Qx");
744 tPF1 =
new TProfile(
"QmVZEAQmVZEC",
"QmVZEAQmVZEC",1,0.5,1.5,
"s"); tList->Add( tPF1 );
745 tPF1 =
new TProfile(
"QmVZEASQUARED",
"QmVZEASQUARED",1,0.5,1.5,
"s"); tList->Add( tPF1 );
746 tPF1 =
new TProfile(
"QmVZECSQUARED",
"QmVZECSQUARED",1,0.5,1.5,
"s"); tList->Add( tPF1 );
747 tPF1 =
new TProfile(
"QmTPCQmVZEA",
"QmTPCQmVZEA",1,0.5,1.5,
"s"); tList->Add( tPF1 );
748 tPF1 =
new TProfile(
"QmTPCQmVZEC",
"QmTPCQmVZEC",1,0.5,1.5,
"s"); tList->Add( tPF1 );
749 tH1D =
new TH1D(
"ChiSquaredVZEA",
"ChiSquaredVZEC",1,0.5,1.5); tList->Add( tH1D );
750 tH1D =
new TH1D(
"ChiSquaredVZEC",
"ChiSquaredVZEC",1,0.5,1.5); tList->Add( tH1D );
752 tH1D =
new TH1D(
"PSIMCDIFFTPC",
"PSIMCDIFFTPC;MC-TPC",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
753 tH1D =
new TH1D(
"PSIMCDIFFTPCA",
"PSIMCDIFFTPCA;MC-TPCA",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
754 tH1D =
new TH1D(
"PSIMCDIFFTPCC",
"PSIMCDIFFTPCC;MC-TPCC",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
755 tH1D =
new TH1D(
"PSIMCDIFFVZE",
"PSIMCDIFFVZE;MC-VZE",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
756 tH1D =
new TH1D(
"PSIMCDIFFVZEA",
"PSIMCDIFFVZEA;MC-VZEA",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
757 tH1D =
new TH1D(
"PSIMCDIFFVZEC",
"PSIMCDIFFVZEC;MC-VZEC",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
759 tList=
new TList(); tList->SetName(
"TPCRFPall"); tList->SetOwner();
AddTPCRFPSpy(tList);
fList->Add(tList);
760 tList=
new TList(); tList->SetName(
"TPCRFPsel"); tList->SetOwner();
AddTPCRFPSpy(tList);
fList->Add(tList);
771 tList=
new TList(); tList->SetName(
"TrkAll"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
772 tList=
new TList(); tList->SetName(
"TrkSel"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
774 tList=
new TList(); tList->SetName(
"TrkAllVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
775 tList=
new TList(); tList->SetName(
"TrkSelVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
779 tList=
new TList(); tList->SetName(
"STATMC"); tList->SetOwner();
fList->Add(tList);
780 tH1D =
new TH1D(
"Events",
"Events",3,0.5,3.5); tList->Add(tH1D);
781 tH1D->GetXaxis()->SetBinLabel(1,
"Selected events");
782 tH1D->GetXaxis()->SetBinLabel(2,
"Stack found");
783 tH1D->GetXaxis()->SetBinLabel(3,
"Track in stack");
785 tList=
new TList(); tList->SetName(
"MthPos"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
786 tList=
new TList(); tList->SetName(
"MthNeg"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
788 tList=
new TList(); tList->SetName(
"MthVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
789 tList=
new TList(); tList->SetName(
"MthPosVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
790 tList=
new TList(); tList->SetName(
"MthNegVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
819 AliAnalysisTaskSE::Exec(option);
879 AliCentrality *cent = ((AliVAODHeader*)tAOD->GetHeader())->GetCentralityP();
880 fV0M = cent->GetCentralityPercentile(
"V0M");
881 fTRK = cent->GetCentralityPercentile(
"TRK");
886 fThisCent = cent->GetCentralityPercentile( mycent );
887 fPriVtxZ = tAOD->GetPrimaryVertex()->GetZ();
888 fSPDVtxZ = tAOD->GetPrimaryVertexSPD()->GetZ();
889 fSPDtracklets = tAOD->GetTracklets()->GetNumberOfTracklets();
890 fVZETotM = tAOD->GetVZEROData()->GetMTotV0A() + tAOD->GetVZEROData()->GetMTotV0C();
899 AliAODMCHeader *mcHeader =
dynamic_cast<AliAODMCHeader*
>(tAOD->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
901 fMCEP = mcHeader->GetReactionPlaneAngle();
928 if(!minimum)
return kFALSE;
933 acceptEvent = TMath::Abs(
fV0M-
fTRK)>5.0?kFALSE:acceptEvent;
978 Int_t rawN = tAOD->GetNumberOfTracks();
980 for(
Int_t id=0;
id!=rawN; ++id) {
981 track =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack(
id));
983 AliFatal(
"Not a standard AOD");
1049 printf(
"****************\n");
1050 printf(
"****************\n");
1051 printf(
"**::MyUserExec()\n");
1058 Bool_t acceptEvent=kFALSE;
1114 AliStack *
stack=NULL;
1116 AliMCEvent *mcevent=NULL;
1117 mcevent = MCEvent();
1118 if(mcevent) stack = mcevent->Stack();
1121 Int_t num = tESD->GetNumberOfTracks();
1122 AliESDtrack *myTrack;
1123 Int_t plist[3000], nlist[3000], np=0, nn=0;
1125 for (
Int_t i=0; i!=num; ++i) {
1126 myTrack = (AliESDtrack*) tESD->GetTrack(i);
1127 if(!myTrack)
continue;
1133 if( myTrack->Charge()>0 ) {
1142 const AliESDVertex *vtx = tESD->GetPrimaryVertex();
1143 AliESDtrack *pT, *nT;
1144 for(
int p=0; p!=np; ++p) {
1145 pT = (AliESDtrack*) tESD->GetTrack( plist[p] );
1146 for(
int n=0; n!=nn; ++n) {
1147 nT = (AliESDtrack*) tESD->GetTrack( nlist[n] );
1149 AliExternalTrackParam pETP(*pT), nETP(*nT);
1151 pETP.GetDCA(&nETP,tESD->GetMagneticField(),xa,xb);
1153 AliESDv0 vertex( nETP,nlist[n], pETP,plist[p] );
1159 Double_t pmx, pmy, pmz, nmx, nmy, nmz;
1160 vertex.GetNPxPyPz(nmx,nmy,nmz);
1161 vertex.GetPPxPyPz(pmx,pmy,pmz);
1162 TVector3 mom1(pmx,pmy,pmz), mom2(nmx,nmy,nmz), mom(vertex.Px(),vertex.Py(),vertex.Pz());
1163 Double_t qlpos = mom1.Dot(mom)/mom.Mag();
1164 Double_t qlneg = mom2.Dot(mom)/mom.Mag();
1169 Double_t eppi = TMath::Sqrt( mpi*mpi + pmx*pmx + pmy*pmy + pmz*pmz );
1170 Double_t enpi = TMath::Sqrt( mpi*mpi + nmx*nmx + nmy*nmy + nmz*nmz );
1171 fDecayMass = TMath::Sqrt( mpi*mpi + mpi*mpi + 2*(eppi*enpi - pmx*nmx - pmy*nmy - pmz*nmz ) );
1177 epr = TMath::Sqrt( mpr*mpr + pmx*pmx + pmy*pmy + pmz*pmz );
1178 epi = TMath::Sqrt( mpi*mpi + nmx*nmx + nmy*nmy + nmz*nmz );
1180 epi = TMath::Sqrt( mpi*mpi + pmx*pmx + pmy*pmy + pmz*pmz );
1181 epr = TMath::Sqrt( mpr*mpr + nmx*nmx + nmy*nmy + nmz*nmz );
1183 fDecayMass = TMath::Sqrt( mpi*mpi + mpr*mpr + 2*(epi*epr - pmx*nmx - pmy*nmy - pmz*nmz ) );
1192 if( dDPHI < 0 ) dDPHI += TMath::TwoPi();
1193 if( dDPHI > TMath::Pi() ) dDPHI = TMath::TwoPi()-dDPHI;
1195 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SAllOP");
1206 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SSelOP");
1221 bool matched =
false;
1222 Int_t labelpos = pT->GetLabel();
1223 Int_t labelneg = nT->GetLabel();
1225 if( labelpos>0 && labelneg>0 ) {
1226 TParticle *mcpos = stack->Particle( labelpos );
1227 TParticle *mcneg = stack->Particle( labelneg );
1228 Int_t pdgRecPos = mcpos->GetPdgCode();
1229 Int_t pdgRecNeg = mcneg->GetPdgCode();
1230 if( pdgRecPos==211&&pdgRecNeg==-211 )
if(mcpos->GetMother(0)>0) {
1231 if( mcpos->GetMother(0)==mcneg->GetMother(0) ) {
1232 TParticle *mcmot = stack->Particle( mcpos->GetMother(0) );
1233 rOri = TMath::Sqrt( mcmot->Vx()*mcmot->Vx() + mcmot->Vy()*mcmot->Vy() );
1234 if( TMath::Abs(mcmot->GetPdgCode())==310) {
1235 if(mcmot->GetNDaughters()==2) matched=
true;
1255 if(!mcArray)
return;
1256 AliAODMCParticle *myMCTrack;
1257 for(
int i=0; i!=mcArray->GetEntriesFast(); ++i) {
1258 myMCTrack =
dynamic_cast<AliAODMCParticle*
>(mcArray->At( i ));
1259 if(!myMCTrack)
continue;
1309 if(myMCTrack->Eta()<-0.8)
continue;
1310 if(myMCTrack->Eta()>+0.8)
continue;
1311 if(myMCTrack->Y()<-0.5)
continue;
1312 if(myMCTrack->Y()>+0.5)
continue;
1314 switch( TMath::Abs(myMCTrack->PdgCode()) ) {
1317 if( myMCTrack->IsPrimary() )
1322 if( myMCTrack->IsPrimary() )
1327 if( myMCTrack->IsPrimary() )
1332 if( myMCTrack->IsPrimary() )
1337 if( myMCTrack->IsPrimary() )
1341 if( myMCTrack->IsPrimary() )
1345 if( myMCTrack->IsPrimary() )
1349 if( myMCTrack->IsPrimary() )
1357 TVector3 mom( me->Px(), me->Py(), 0 );
1358 TVector3 fli( me->Xv()-vtx->GetX(), me->Yv()-vtx->GetY(), 0 );
1359 Double_t ctp = mom.Dot(fli) / mom.Mag() / fli.Mag();
1364 TVector3 mom( me->Px(), me->Py(), 0 );
1365 TVector3 fli( me->Xv()-vtx->GetX(), me->Yv()-vtx->GetY(), 0 );
1366 Double_t ctp = mom.Dot(fli) / mom.Mag() / fli.Mag();
1371 Double_t dx = me->Xv()-vtx->GetX();
1372 Double_t dy = me->Yv()-vtx->GetY();
1373 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy );
1378 Double_t dx = me->Xv()-vtx->GetX();
1379 Double_t dy = me->Yv()-vtx->GetY();
1380 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy );
1385 Double_t dx = me->Xv()-vtx->GetX();
1386 Double_t dy = me->Yv()-vtx->GetY();
1387 Double_t dz = me->Zv()-vtx->GetZ();
1388 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy + dz*dz );
1393 Double_t dx = me->Xv()-vtx->GetX();
1394 Double_t dy = me->Yv()-vtx->GetY();
1395 Double_t dz = me->Zv()-vtx->GetZ();
1396 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy + dz*dz );
1401 TClonesArray* mcArray=NULL;
1403 mcArray =
dynamic_cast<TClonesArray*
>(tAOD->FindListObject(AliAODMCParticle::StdBranchName()));
1407 Int_t nV0s = tAOD->GetNumberOfV0s();
1409 Int_t v0all=0, v0imw=0;
1410 for (
Int_t i=0; i!=nV0s; ++i) {
1411 myV0 = (AliAODv0*) tAOD->GetV0(i);
1413 if(!
fOnline)
if(myV0->GetOnFlyStatus() )
continue;
1414 if(
fOnline)
if(!myV0->GetOnFlyStatus() )
continue;
1420 AliAODTrack *iT, *jT;
1421 AliAODVertex *vtx = tAOD->GetPrimaryVertex();
1424 vtx->GetCovarianceMatrix(cov);
1425 const AliESDVertex vESD(pos,cov,100.,100);
1428 iT=(AliAODTrack*) myV0->GetDaughter(0);
1429 if(iT->Charge()>0) {
1436 iT=(AliAODTrack*) myV0->GetDaughter(iPos);
1437 AliESDtrack ieT( iT );
1438 ieT.SetTPCClusterMap( iT->GetTPCClusterMap() );
1439 ieT.SetTPCSharedMap( iT->GetTPCSharedMap() );
1440 ieT.SetTPCPointsF( iT->GetTPCNclsF() );
1441 ieT.PropagateToDCA(&vESD, tAOD->GetMagneticField(), 100);
1444 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1451 jT=(AliAODTrack*) myV0->GetDaughter(iNeg);
1452 AliESDtrack jeT( jT );
1453 jeT.SetTPCClusterMap( jT->GetTPCClusterMap() );
1454 jeT.SetTPCSharedMap( jT->GetTPCSharedMap() );
1455 jeT.SetTPCPointsF( jT->GetTPCNclsF() );
1456 jeT.PropagateToDCA(&vESD, tAOD->GetMagneticField(), 100);
1458 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1466 if(
IsAtTPCEdge(iT->Phi(),iT->Pt(),+1,tAOD->GetMagneticField()) )
continue;
1467 if(
IsAtTPCEdge(jT->Phi(),jT->Pt(),-1,tAOD->GetMagneticField()) )
continue;
1509 if( dDPHI < 0 ) dDPHI += TMath::TwoPi();
1510 if( dDPHI > TMath::Pi() ) dDPHI = TMath::TwoPi()-dDPHI;
1512 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SAllOP");
1536 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SSelOP");
1551 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1556 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1564 bool matched =
false;
1565 bool feeddown =
false;
1566 Int_t labelpos = iT->GetLabel();
1567 Int_t labelneg = jT->GetLabel();
1568 AliAODMCParticle *mcpos = (AliAODMCParticle*) mcArray->At( TMath::Abs(labelpos) );
1569 AliAODMCParticle *mcneg = (AliAODMCParticle*) mcArray->At( TMath::Abs(labelneg) );
1570 if( mcpos && mcneg ) {
1572 Int_t pdgRecPos = mcpos->GetPdgCode();
1573 Int_t pdgRecNeg = mcneg->GetPdgCode();
1574 int pospdg=211, negpdg=211;
1575 int mompdg=310, fdwpdg=333;
1580 pospdg=2212; negpdg=211;
1582 negpdg=2212; pospdg=211;
1585 if( TMath::Abs(pdgRecPos)==pospdg&&TMath::Abs(pdgRecNeg)==negpdg )
1586 if(mcpos->GetMother()>-1)
1587 if( mcpos->GetMother()==mcneg->GetMother() ) {
1588 AliAODMCParticle *mcmot = (AliAODMCParticle*) mcArray->At( mcpos->GetMother() );
1589 fDecayMatchOrigin = TMath::Sqrt( mcmot->Xv()*mcmot->Xv() + mcmot->Yv()*mcmot->Yv() );
1593 if( TMath::Abs(mcmot->GetPdgCode())==mompdg) {
1594 if(mcmot->GetNDaughters()==2) {
1597 Double_t dx = mcmot->Xv() - mcpos->Xv();
1598 Double_t dy = mcmot->Yv() - mcpos->Yv();
1601 if(mcmot->GetMother()>-1) {
1603 AliAODMCParticle *mcfdw = (AliAODMCParticle*) mcArray->At( mcmot->GetMother() );
1604 if( TMath::Abs(mcfdw->GetPdgCode())==fdwpdg)
1619 if(labelpos<0&&labelneg<0) {
1623 }
else if(labelpos>0&&labelneg>0) {
1626 }
else if(labelpos*labelneg<0) {
1631 AliAODVertex *secvtx = myV0->GetSecondaryVtx();
1633 secvtx->GetXYZ(possec);
1634 secvtx->GetCovarianceMatrix(covsec);
1635 const AliESDVertex vSecVtx(possec,covsec,100.,100);
1636 AliESDtrack trackAtSecI( iT );
1637 trackAtSecI.SetTPCClusterMap( iT->GetTPCClusterMap() );
1638 trackAtSecI.SetTPCSharedMap( iT->GetTPCSharedMap() );
1639 trackAtSecI.SetTPCPointsF( iT->GetTPCNclsF() );
1640 trackAtSecI.PropagateToDCA(&vSecVtx, tAOD->GetMagneticField(), 100);
1648 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1652 if(labelpos<0||labelneg<0)
FillTrackSpy(
"MthNegDau",
true);
1654 AliESDtrack trackAtSecJ( jT );
1655 trackAtSecJ.SetTPCClusterMap( jT->GetTPCClusterMap() );
1656 trackAtSecJ.SetTPCSharedMap( jT->GetTPCSharedMap() );
1657 trackAtSecJ.SetTPCPointsF( jT->GetTPCNclsF() );
1658 trackAtSecJ.PropagateToDCA(&vSecVtx, tAOD->GetMagneticField(), 100);
1663 fDaughterMatchPhi=mcneg->Phi();
1666 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1670 if(labelpos<0||labelneg<0)
FillTrackSpy(
"MthNegDau",
true);
1682 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1687 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1725 TClonesArray* mcArray=NULL;
1727 mcArray =
dynamic_cast<TClonesArray*
>(tAOD->FindListObject(AliAODMCParticle::StdBranchName()));
1730 for(
int i=0; i!=tAOD->GetNumberOfTracks(); ++i) {
1731 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack( i ));
1733 if( !t->TestFilterBit(1) )
continue;
1749 if( TMath::Abs(
fDecayMass) > 3.0 ) pass=kFALSE;
1750 if( t->Eta()<-0.5 || t->Eta()>+0.5 ) pass=kFALSE;
1751 if( t->Pt()<0.2 || t->Pt()>20.0 ) pass=kFALSE;
1752 AliESDtrack et( t );
1753 et.SetTPCClusterMap( t->GetTPCClusterMap() );
1754 et.SetTPCSharedMap( t->GetTPCSharedMap() );
1755 et.SetTPCPointsF( t->GetTPCNclsF() );
1758 AliAODVertex *vtx = tAOD->GetPrimaryVertex();
1761 et.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1767 FillTrackVn(
"TrkAllVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1771 FillTrackVn(
"TrkSelVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1776 bool matched =
false;
1777 Int_t label = t->GetLabel();
1778 AliAODMCParticle *mcpar = (AliAODMCParticle*) mcArray->At( TMath::Abs(label) );
1781 Int_t pdgmcpar = TMath::Abs(mcpar->GetPdgCode());
1784 if(pdgmcpar==211) matched =
true;
1787 if(pdgmcpar==211) matched =
true;
1790 if(pdgmcpar==2212) matched =
true;
1793 if(!mcpar->IsPrimary()) matched =
false;
1798 FillTrackVn(
"MthVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1802 FillTrackVn(
"MthNegVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1806 FillTrackVn(
"MthPosVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1837 if(!TMath::AreEqualAbs(MeanQaQt,0,1e-10)&&!TMath::AreEqualAbs(MeanQcQt,0,1e-10)&&!TMath::AreEqualAbs(MeanQaQc,0,1e-10)) {
1838 Double_t OneOverChiSquaredVZEA = MeanQaQa*MeanQcQt/MeanQaQc/MeanQaQt-1;
1839 Double_t OneOverChiSquaredVZEC = MeanQcQc*MeanQaQt/MeanQaQc/MeanQcQt-1;
1840 if(!TMath::AreEqualAbs(OneOverChiSquaredVZEA,0,1e-10)&&!TMath::AreEqualAbs(OneOverChiSquaredVZEC,0,1e-10)) {
1841 ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEA"))->SetBinContent( 1, 1/OneOverChiSquaredVZEA );
1842 ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEC"))->SetBinContent( 1, 1/OneOverChiSquaredVZEC );
1879 Bool_t overwrite = kTRUE;
1914 for(
int iCand=0; iCand!=
fCandidates->GetEntriesFast(); ++iCand ) {
1931 if(
fDebug) printf(
" was in RP set");
1950 if(
fDebug) printf(
" >charged track (%d) was also found in RP set (adding poi tag)\n",cand->
GetID());
1985 TF1 cutLo(
"cutLo",
"-0.01/x+pi/18.0-0.015", 0, 100);
1986 TF1 cutHi(
"cutHi",
"0.55/x/x+pi/18.0+0.03", 0, 100);
1988 if(b<0) phimod = TMath::TwoPi()-phimod;
1989 if(charge<0) phimod = TMath::TwoPi()-phimod;
1990 phimod += TMath::Pi()/18.0;
1991 phimod = fmod(phimod, TMath::Pi()/9.0);
1992 if( phimod<cutHi.Eval(pt) && phimod>cutLo.Eval(pt) )
2011 printf(
"**::MakeQVectors()");
2022 Double_t qvzecos,qvzesin,psivzea,psivzec,psivze,qvze, qvzea, qvzec;
2030 psivze = ( TMath::Pi()+TMath::ATan2(-qvzesin,-qvzecos) )/
fHarmonic;
2032 Double_t qtpccos,qtpcsin,psitpca,psitpcc,psitpc,qtpc;
2038 psitpc = ( TMath::Pi()+TMath::ATan2(-qtpcsin,-qtpccos) )/
fHarmonic;
2046 if(
fQTPCA<2||fQTPCC<2)
return;
2053 Double_t vzec_qmnor = TMath::Sqrt( vzec_qmcos*vzec_qmcos + vzec_qmsin*vzec_qmsin );
2056 Double_t vzea_qmnor = TMath::Sqrt( vzea_qmcos*vzea_qmcos + vzea_qmsin*vzea_qmsin );
2059 Double_t vze_qmnor = TMath::Sqrt( vze_qmcos*vze_qmcos + vze_qmsin*vze_qmsin );
2062 Double_t tpcc_qmnor = TMath::Sqrt( tpcc_qmcos*tpcc_qmcos + tpcc_qmsin*tpcc_qmsin );
2065 Double_t tpca_qmnor = TMath::Sqrt( tpca_qmcos*tpca_qmcos + tpca_qmsin*tpca_qmsin );
2068 Double_t tpc_qmnor = TMath::Sqrt( tpc_qmcos*tpc_qmcos + tpc_qmsin*tpc_qmsin );
2096 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 1., tpcc_qmsin, tpcc_qmnor );
2097 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 2., tpcc_qmcos, tpcc_qmnor );
2098 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 3., tpca_qmsin, tpca_qmnor );
2099 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 4., tpca_qmcos, tpca_qmnor );
2100 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 5., tpc_qmsin, tpc_qmnor );
2101 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 6., tpc_qmcos, tpc_qmnor );
2103 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 1., vzec_qmsin, vzec_qmnor );
2104 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 2., vzec_qmcos, vzec_qmnor );
2105 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 3., vzea_qmsin, vzea_qmnor );
2106 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 4., vzea_qmcos, vzea_qmnor );
2107 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 5., vze_qmsin, vze_qmnor );
2108 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 6., vze_qmcos, vze_qmnor );
2110 Double_t vzeqaqc = vzec_qmcos*vzea_qmcos + vzec_qmsin*vzea_qmsin;
2111 Double_t vzeqatpcq = vzea_qmcos*tpc_qmcos + vzea_qmsin*tpc_qmsin;
2112 Double_t vzeqctpcq = vzec_qmcos*tpc_qmcos + vzec_qmsin*tpc_qmsin;
2113 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmVZEAQmVZEC"))->Fill( 1., vzeqaqc, vze_qmnor );
2114 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmVZEASQUARED"))->Fill( 1., vzea_qmnor*vzea_qmnor, vze_qmnor );
2115 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmVZECSQUARED"))->Fill( 1., vzec_qmnor*vzec_qmnor, vze_qmnor );
2116 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmTPCQmVZEA"))->Fill( 1., vzeqatpcq, vze_qmnor );
2117 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmTPCQmVZEC"))->Fill( 1., vzeqctpcq, vze_qmnor );
2130 eta = -3.45+0.5*(
id/8);
2131 phi = TMath::PiOver4()*(0.5+
id%8);
2132 w = tevent->GetVZEROEqMultiplicity(
id);
2144 eta = +4.8-0.6*((
id/8)-4);
2145 phi = TMath::PiOver4()*(0.5+
id%8);
2146 w = tevent->GetVZEROEqMultiplicity(
id);
2164 tH1D =
new TH1D(
"PT",
"PT", 50,0,5); me->Add(tH1D);
2165 tH1D =
new TH1D(
"PHI",
"PHI", 90,0,TMath::TwoPi()); me->Add(tH1D);
2166 tH1D =
new TH1D(
"ETA",
"ETA", 40,-1,+1); me->Add(tH1D);
2167 tH1D =
new TH1D(
"TPCS",
"TPC Signal", 100,0,500); me->Add(tH1D);
2168 tH1D =
new TH1D(
"IPXY",
"IPXY", 100,-2,+2); me->Add(tH1D);
2169 tH1D =
new TH1D(
"IPZ",
"IPZ", 100,-2,+2); me->Add(tH1D);
2171 tH1D =
new TH1D(
"TPCNCLS",
"NCLS", 170,-0.5,+169.5); me->Add(tH1D);
2172 tH1D =
new TH1D(
"TPCSHCL",
"NSCLS / NCLS", 100,0,1); me->Add(tH1D);
2173 tH1D =
new TH1D(
"TPCFICL",
"NCLS1I / NCLS",100,0,1); me->Add(tH1D);
2174 tH1D =
new TH1D(
"TPCXRNF",
"XROW / NFCLS", 100,0,1.5); me->Add(tH1D);
2175 tH1D =
new TH1D(
"TPCRCHI",
"CHI2 / NCLS", 50,0,5); me->Add(tH1D);
2177 tH1D =
new TH1D(
"ITSNCLS",
"NCLS", 7,-0.5,+6.5); me->Add(tH1D);
2178 tH1D =
new TH1D(
"ITSRCHI",
"CHI2 / NCLS", 50,0,5); me->Add(tH1D);
2183 if(track->GetKinkIndex(0)>0)
return kFALSE;
2184 if( (track->GetStatus()&AliESDtrack::kTPCrefit)==0 )
return kFALSE;
2188 Double_t tpcs = track->GetTPCsignal();
2190 track->GetImpactParameters(ipxy,ipz);
2191 Int_t cls = track->GetTPCclusters(0);
2193 findcls = track->GetTPCNclsF();
2194 xrows = track->GetTPCCrossedRows();
2195 chi2 = track->GetTPCchi2();
2205 cls1i = track->GetTPCNclsIter1();
2206 scls = track->GetTPCnclsS();
2207 itscls = track->GetITSclusters(0);
2208 itschi2 = track->GetITSchi2();
2211 Double_t itsrchi2 = itscls/itschi2;
2269 AliAODVertex *vtx = tAOD->GetPrimaryVertex();
2272 vtx->GetCovarianceMatrix(cov);
2273 const AliESDVertex vESD(pos,cov,100.,100);
2276 Int_t rawN = tAOD->GetNumberOfTracks();
2277 for(
Int_t id=0;
id!=rawN; ++id) {
2278 track =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack(
id));
2280 AliFatal(
"Not a standard AOD");
2286 if(
IsAtTPCEdge( track->Phi(), track->Pt(), track->Charge(), tAOD->GetMagneticField() ) )
continue;
2287 AliESDtrack etrack( track );
2288 etrack.SetTPCClusterMap( track->GetTPCClusterMap() );
2289 etrack.SetTPCSharedMap( track->GetTPCSharedMap() );
2290 etrack.SetTPCPointsF( track->GetTPCNclsF() );
2292 etrack.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
2332 Int_t rawN = tESD->GetNumberOfTracks();
2333 for(
Int_t id=0;
id!=rawN; ++id) {
2334 track = tESD->GetTrack(
id);
2337 if(
IsAtTPCEdge( track->Phi(), track->Pt(), track->Charge(), tESD->GetMagneticField() ) )
continue;
2370 tH1D =
new TH1D(
"Phi",
"Phi", 100,0,TMath::TwoPi()); me->Add(tH1D);
2371 tH1D =
new TH1D(
"Eta",
"Eta", 100,-1,+1); me->Add(tH1D);
2372 tH1D =
new TH1D(
"Y",
"Y", 100,-1,+1); me->Add(tH1D);
2373 tH1D =
new TH1D(
"Rad2",
"Rad2", 1000,0,+100); me->Add(tH1D);
2380 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Pt" ))->Fill( p->Pt() );
2381 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Eta" ))->Fill( p->Eta() );
2382 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Y" ))->Fill( p->Y() );
2383 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Phi" ))->Fill( p->Phi() );
2384 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Rad2" ))->Fill( TMath::Sqrt( p->Xv()*p->Xv() +
2385 p->Yv()*p->Yv() ) );
2386 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Dphi" ))->Fill( p->Pt(),
GetMCDPHI(p->Phi()) );
2387 ((TProfile*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Cos2dphi" ))->Fill( p->Pt(), TMath::Cos( 2*
GetMCDPHI(p->Phi()) ), 1 );
2399 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Pt" ))->Fill( p->Pt() );
2400 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Eta" ))->Fill( p->Eta() );
2401 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Phi" ))->Fill( p->Phi() );
2402 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Rad2" ))->Fill( TMath::Sqrt( p->Vx()*p->Vx() +
2403 p->Vy()*p->Vy() ) );
2412 tH2D =
new TH2D(
"PhiEta",
"PhiEta;Phi;Eta", 100,0,TMath::TwoPi(),100,-1,+1); me->Add(tH2D);
2421 tH2D =
new TH2D(
"APPOS",
"APPOS;alphaPOS;QtPOS",100,-2,+2,100,0,0.3); me->Add(tH2D);
2422 tH2D =
new TH2D(
"D0PD0N",
"D0PD0N;D0P;D0N", 200,-10,+10,200,-10,+10); me->Add(tH2D);
2423 tH2D =
new TH2D(
"XPOSXNEG",
"XPOSXNEG;XPOS;XNEG", 200,-50,+50,200,-50,+50); me->Add(tH2D);
2426 tH1D =
new TH1D(
"MCOrigin",
"MCOrigin;Rad2", 1000,0,50); me->Add(tH1D);
2427 tH2D =
new TH2D(
"PHIRes",
"PHIRes;PHI;MC-DAT", 72,0,TMath::TwoPi(),100,-0.12,+0.12); me->Add(tH2D);
2428 tH2D =
new TH2D(
"ETARes",
"ETARes;ETA;MC-DAT", 16,-0.8,+0.8,100,-0.2,+0.2); me->Add(tH2D);
2430 tH2D =
new TH2D(
"RXYRes",
"RXYRes;RXY;MC-DAT", 100,0,50,100,-4.0,+4.0); me->Add(tH2D);
2432 tH2D =
new TH2D(
"PTDPHIMC",
"PtDPHIMC;Pt;PHI-MCEP",
fPtBins,
fPtBinEdge,72,0,TMath::Pi()); me->Add(tH2D);
2433 tPro =
new TProfile(
"Cos2dphiMC",
"Cos2dphiMC",
fPtBins,
fPtBinEdge); me->Add(tPro);
2492 tH2D =
new TH2D(
"PHIETA",
"PHIETA;PHI;ETA", 100,0,TMath::TwoPi(),100,-2,2); me->Add(tH2D);
2494 tH2D =
new TH2D(
"IPXYIPZ",
"IPXYIPZ;IPXY;IPZ", 100,-10,+10,100,-10,+10); me->Add(tH2D);
2499 tH2D->GetYaxis()->SetBinLabel(1,
"ITS refit");
2500 tH2D->GetYaxis()->SetBinLabel(2,
"TPC refit");
2501 tH2D =
new TH2D(
"POSTPCNCLCHI2",
"POSTPCNCLCHI2;NCLS;CHI2/NCLS", 170,0,170,100,0,8); me->Add(tH2D);
2502 tH2D =
new TH2D(
"POSTPCNFCLNXR",
"POSTPCNFCLNXR;NFCLS;NXR", 170,0,170,170,0,170); me->Add(tH2D);
2503 tH2D =
new TH2D(
"POSTPCNCLNFCL",
"POSTPCNCLNFCL;NCLS;NFCLS", 170,0,170,170,0,170); me->Add(tH2D);
2504 tH2D =
new TH2D(
"POSTPCNCLNSCL",
"POSTPCNCLNSCL;NCLS;NSCLS", 170,0,170,170,0,170); me->Add(tH2D);
2505 tH2D =
new TH2D(
"NEGTPCNCLCHI2",
"NEGTPCNCLCHI2;NCLS;CHI2/NCLS", 170,0,170,100,0,8); me->Add(tH2D);
2506 tH2D =
new TH2D(
"NEGTPCNFCLNXR",
"NEGTPCNFCLNXR;NFCLS;NXR", 170,0,170,170,0,170); me->Add(tH2D);
2507 tH2D =
new TH2D(
"NEGTPCNCLNFCL",
"NEGTPCNCLNFCL;NCLS;NFCLS", 170,0,170,170,0,170); me->Add(tH2D);
2508 tH2D =
new TH2D(
"NEGTPCNCLNSCL",
"NEGTPCNCLNSCL;NCLS;NSCLS", 170,0,170,170,0,170); me->Add(tH2D);
2511 tPro =
new TProfile(
"COSNDPHIMC",
"COSNDPHIMC",
fPtBins,
fPtBinEdge); me->Add(tPro);
2514 tH2D =
new TH2D(
"PHIRes",
"PHIRes;PHI;MC-DAT", 72,0,TMath::TwoPi(),100,-0.12,+0.12); me->Add(tH2D);
2515 tH2D =
new TH2D(
"ETARes",
"ETARes;ETA;MC-DAT", 16,-0.8,+0.8,100,-0.2,+0.2); me->Add(tH2D);
2542 ((TProfile*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"COSNDPHIMC" ))->Fill(
fDaughterPt, cosn, 1 );
2570 for(
Int_t lay=0; lay!=6; ++lay)
2588 for(
Int_t lay=0; lay!=6; ++lay)
2607 printf(
"One of vertices is not valid\n");
2610 static TMatrixDSym vVb(3);
2612 double dx = v0->GetX()-v1->GetX();
2613 double dy = v0->GetY()-v1->GetY();
2614 double dz = v0->GetZ()-v1->GetZ();
2615 double cov0[6],cov1[6];
2616 v0->GetCovarianceMatrix(cov0);
2617 v1->GetCovarianceMatrix(cov1);
2618 vVb(0,0) = cov0[0]+cov1[0];
2619 vVb(1,1) = cov0[2]+cov1[2];
2620 vVb(2,2) = cov0[5]+cov1[5];
2621 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
2622 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
2624 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
2625 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
2626 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
2627 return dist>0 ? TMath::Sqrt(dist) : -1;
2635 const int kMinPlpContrib = 5;
2636 const double kMaxPlpChi2 = 5.0;
2637 const double kMinWDist = 15;
2640 printf(
"Event is neither of AOD nor ESD\n");
2644 const AliVVertex* vtPrm = 0;
2645 const AliVVertex* vtPlp = 0;
2649 if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) )
return kFALSE;
2650 vtPrm = aod->GetPrimaryVertex();
2651 if (vtPrm == aod->GetPrimaryVertexSPD())
return kTRUE;
2654 if ( !(nPlp=esd->GetNumberOfPileupVerticesTracks()))
return kFALSE;
2655 vtPrm = esd->GetPrimaryVertexTracks();
2656 if (((AliESDVertex*)vtPrm)->GetStatus()!=1)
return kTRUE;
2660 for (
int ipl=0;ipl<nPlp;ipl++) {
2661 vtPlp = aod ? (
const AliVVertex*)aod->GetPileupVertexTracks(ipl) : (
const AliVVertex*)esd->GetPileupVertexTracks(ipl);
2663 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
2664 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
2668 double wDst =
GetWDist(vtPrm,vtPlp);
2669 if (wDst<kMinWDist)
continue;
2680 fFB1 = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
2682 fFB1024 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
2683 fFB1024->SetMinNCrossedRowsTPC(120);
2684 fFB1024->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
2685 fFB1024->SetMaxChi2PerClusterITS(36);
2686 fFB1024->SetMaxFractionSharedTPCClusters(0.4);
2687 fFB1024->SetMaxChi2TPCConstrainedGlobal(36);
2688 fFB1024->SetEtaRange(-0.9,0.9);
2689 fFB1024->SetPtRange(0.15, 1e10);
2696 ret =
fFB1024->AcceptTrack(track);
2699 ret =
fFB1->AcceptTrack(track);
2715 for(
int i=0;i!=64;++i)
fVZEextW[i]=1;
2728 for(
int i=0;i!=64;++i)
fVZEextW[i] =
fVZEResponse->Integral(i+1,i+1,ybinmin,ybinmax)/(maxC-minC);
2731 for(
int j=0; j!=8; ++j) {
2733 for(
int i=0;i!=8;++i) ring[j] +=
fVZEextW[j*8+i]/8;
2737 int xbinmin, xbinmax;
2740 disk[0] =
fVZEResponse->Integral(xbinmin,xbinmax,ybinmin,ybinmax)/(maxC-minC)/(xbinmax-xbinmin+1);
2743 disk[1] =
fVZEResponse->Integral(xbinmin,xbinmax,ybinmin,ybinmax)/(maxC-minC)/(xbinmax-xbinmin+1);
2753 printf(
"VZE calibration: requested but not found!!!\n");
2761 tList->SetName(
"VZEQA" );
2763 fList->Add( tList );
2764 tH2D =
new TH2D(
"EQU",
"EQU;VZEeqmult-VZEmult;cell",100,-5,+5,64,0,64); tList->Add( tH2D );
2765 prof =
new TProfile2D(
"LINbefCAL",
"LINbef;VZEcell;VZEeqmult;SPDtrkl", 64,0,64,350,0,700,0,10000); tList->Add( prof );
2766 prof =
new TProfile2D(
"LINaftCAL",
"LINaft;VZEcell;VZEeqmult;SPDtrkl", 64,0,64,350,0,700,0,10000); tList->Add( prof );
2782 AliVVZERO *vzero = tAOD->GetVZEROData();
2783 AliAODTracklets *tracklets = tAOD->GetTracklets();
2785 if(!tracklets)
return;
2787 Int_t trkl = tracklets->GetNumberOfTracklets();
2788 for(
int id=0;
id!=64; ++id) {
2789 mult = vzero->GetMultiplicity(
id);
2790 eqmult = tAOD->GetVZEROEqMultiplicity(
id);
2792 ((TProfile2D*) ((
TList*)
fList->FindObject(
"VZEQA"))->
FindObject(
"LINbefCAL" ))->Fill(
id,eqmult,trkl,1);
2799 AliVEvent *
event = InputEvent();
2801 Int_t thisrun =
event->GetRunNumber();
2802 fVZEResponse =
new TH2D( Form(
"%d",thisrun), Form(
"%d;cell;CC",thisrun), 64,0,64, 110, -10, 100);
2808 AliVEvent *
event = InputEvent();
2814 for(
int id=0;
id!=64; ++id) {
2815 w =
event->GetVZEROEqMultiplicity(
id);
2816 if(w<3) rejectEvent = kTRUE;
2818 if(rejectEvent)
return;
2820 for(
int id=0;
id!=64; ++id) {
2821 w =
event->GetVZEROEqMultiplicity(
id);
2828 for(
int i=0; i!=tAOD->GetNumberOfTracks(); ++i) {
2829 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack( i ));
2831 if( !t->TestFilterBit(fb) )
continue;
2832 if( t->Eta()<-0.8 || t->Eta()>+0.8 )
continue;
2833 if( t->Pt()<0.2 || t->Pt()>5.0 )
continue;
2834 if( t->GetTPCNcls()<70 )
continue;
2836 if( t->Chi2perNDF()<0.2 )
continue;
2846 for(
int i=0; i!=ev->GetNumberOfTracks(); ++i) {
2847 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(ev->GetTrack( i ));
2849 if( !t->TestFilterBit(1) )
continue;
2850 if( t->Eta()<-0.8 || t->Eta()>+0.8 )
continue;
2851 if( t->Pt()<0.2 || t->Pt()>5.0 )
continue;
2852 if( t->GetTPCNcls()<70 )
continue;
2853 if( t->GetTPCsignal()<10.0 )
continue;
2854 if( t->Chi2perNDF()<0.2 )
continue;
2864 for(
int i=0; i!=ev->GetNumberOfTracks(); ++i) {
2865 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(ev->GetTrack( i ));
2867 if( !t->TestFilterBit(16) )
continue;
2868 if( t->Eta()<-0.8 || t->Eta()>+0.8 )
continue;
2869 if( t->Pt()<0.2 || t->Pt()>5.0 )
continue;
2870 if( t->GetTPCNcls()<70 )
continue;
2871 if( t->GetTPCsignal()<10.0 )
continue;
2872 if( t->Chi2perNDF()<0.1 )
continue;
2874 if( !t->PropagateToDCA(ev->GetPrimaryVertex(),ev->GetMagneticField(),100,b,bcov) )
continue;
2875 if( b[0]>+0.3 || b[0]<-0.3 || b[1]>+0.3 || b[1]<-0.3)
continue;
2892 tProfile =
new TProfile(
"SP_uVZEA",
"u x Q_{VZEA}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2893 tProfile =
new TProfile(
"SP_uVZEC",
"u x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2894 tProfile =
new TProfile(
"SP_VZEAVZEC",
"Q_{VZEA} x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2895 tProfile =
new TProfile(
"SP_VZEATPC",
"Q_{VZEA} x Q_{TPC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2896 tProfile =
new TProfile(
"SP_VZECTPC",
"Q_{VZEC} x Q_{TPC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2898 tProfile =
new TProfile(
"SP_uVZEAuVZEC",
"u x Q_{VZEA} . u x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2899 tProfile =
new TProfile(
"SP_uVZEAVZEAVZEC",
"u x Q_{VZEA} . Q_{VZEA} x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2900 tProfile =
new TProfile(
"SP_uVZECVZEAVZEC",
"u x Q_{VZEC} . Q_{VZEA} x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2902 tProfile =
new TProfile(
"SP_uTPCA",
"u x Q_{TPCA}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2903 tProfile =
new TProfile(
"SP_uTPCC",
"u x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2904 tProfile =
new TProfile(
"SP_TPCATPCC",
"Q_{TPCA} x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2906 tProfile =
new TProfile(
"SP_uTPCATPCATPCC",
"u x Q_{TPCA} . Q_{TPCA} x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2907 tProfile =
new TProfile(
"SP_uTPCCTPCATPCC",
"u x Q_{TPCC} . Q_{TPCA} x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2912 tProfile =
new TProfile(
"QC_C2",
"QC_C2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2913 tProfile =
new TProfile(
"QC_C4",
"QC_C4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2914 tProfile =
new TProfile(
"QC_DC2",
"QC_DC2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2915 tProfile =
new TProfile(
"QC_DC4",
"QC_DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2916 tProfile =
new TProfile(
"QC_C2C4",
"QC_C2C4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2917 tProfile =
new TProfile(
"QC_C2DC2",
"QC_C2DC2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2918 tProfile =
new TProfile(
"QC_C2DC4",
"QC_C2DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2919 tProfile =
new TProfile(
"QC_C4DC2",
"QC_C4DC2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2920 tProfile =
new TProfile(
"QC_C4DC4",
"QC_C4DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2921 tProfile =
new TProfile(
"QC_DC2DC4",
"QC_DC2DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2923 tProfile =
new TProfile(
"QC_pCos",
"QC_pCos",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2924 tProfile =
new TProfile(
"QC_pSin",
"QC_pSin",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2925 tProfile =
new TProfile(
"QC_qCos",
"QC_qCos",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2926 tProfile =
new TProfile(
"QC_qSin",
"QC_qSin",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2927 tProfile =
new TProfile(
"QC_q2hCos",
"QC_q2hCos",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2928 tProfile =
new TProfile(
"QC_q2hSin",
"QC_q2hSin",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2945 tProfile =
new TProfile(
"MC_COSNDPHI",
"MC_COSNDPHI",
fPtBins,
fPtBinEdge,-3,+3); tList->Add( tProfile );
2946 tH2D =
new TH2D(
"MC_COSNDPHI_uQVZEA",
"MC_COSNDPHI_uQVZEA",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2947 tH2D =
new TH2D(
"MC_COSNDPHI_uQVZEC",
"MC_COSNDPHI_uQVZEC",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2948 tH2D =
new TH2D(
"MC_COSNDPHI_uQTPCA",
"MC_COSNDPHI_uQTPCA",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2949 tH2D =
new TH2D(
"MC_COSNDPHI_uQTPCC",
"MC_COSNDPHI_uQTPCC",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2954 TProfile2D *tProfile;
3019 out->SetName(
fList->GetName() );
3026 ori = (
TList*)
fList->FindObject(
"MakeQSpy");
3029 ori = (
TList*)
fList->FindObject(
"V0SAllVn");
3031 end->SetName( ori->GetName() ); out->Add( end );
3033 ori = (
TList*)
fList->FindObject(
"V0SSelVn");
3035 end->SetName( ori->GetName() ); out->Add( end );
3038 ori = (
TList*)
fList->FindObject(
"V0SMthVn");
3040 end->SetName( ori->GetName() ); out->Add( end );
3042 ori = (
TList*)
fList->FindObject(
"V0SMthPosPosVn");
3044 end->SetName( ori->GetName() ); out->Add( end );
3046 ori = (
TList*)
fList->FindObject(
"V0SMthNegNegVn");
3048 end->SetName( ori->GetName() ); out->Add( end );
3050 ori = (
TList*)
fList->FindObject(
"V0SMthPosNegVn");
3052 end->SetName( ori->GetName() ); out->Add( end );
3054 ori = (
TList*)
fList->FindObject(
"V0SUnMthVn");
3056 end->SetName( ori->GetName() ); out->Add( end );
3065 for(
int i=0; i!=
nbins; ++i) sum += bins[i];
3074 tH2D = ((
TH2D*)tList->FindObject(
"DecayYield_PtMass" ));
3076 int nmassbins = tH2D->GetNbinsY();
3078 if( nmassbins!=sum ) {
3079 printf(
"Error: incompatible binning %d vs %d\nBYE\n",nmassbins,sum);
3083 npt = tH2D->GetNbinsX();
3084 for(
int i=0; i!=npt+1; ++i) pt[i] = tH2D->GetXaxis()->GetBinLowEdge(i+1);
3086 for(
int i=0,j=0; i!=nbins+1; ++i) {
3087 mass[i] = tH2D->GetYaxis()->GetBinLowEdge(j+1);
3091 TProfile2D *tProfileOld, *tProfileNew;
3092 TString tprofiles[31] = {
"DecayAvgPt_PtMass",
"SP_uVZEA",
"SP_uVZEC",
"SP_VZEAVZEC",
"SP_VZEATPC",
3093 "SP_VZECTPC",
"SP_uVZEAuVZEC",
"SP_uVZEAVZEAVZEC",
"SP_uVZECVZEAVZEC",
"SP_uTPCA",
3094 "SP_uTPCC",
"SP_TPCATPCC",
"SP_uTPCATPCATPCC",
"SP_uTPCCTPCATPCC",
"QC_C2",
3095 "QC_C4",
"QC_DC2",
"QC_DC4",
"QC_C2C4",
"QC_C2DC2",
3096 "QC_C2DC4",
"QC_C4DC2",
"QC_C4DC4",
"QC_DC2DC4",
"QC_pCos",
3097 "QC_pSin",
"QC_qCos",
"QC_qSin",
"QC_q2hCos",
"QC_q2hSin",
3099 for(
int i=0; i!=31; ++i) {
3100 tProfileOld = (TProfile2D*) tList->FindObject( tprofiles[i].Data() );
3101 if(!tProfileOld)
continue;
3102 TArrayD *oldsw2 = tProfileOld->GetSumw2();
3103 TArrayD *oldbsw2 = tProfileOld->GetBinSumw2();
3104 tProfileNew =
new TProfile2D( tprofiles[i].
Data(), tprofiles[i].
Data(),
3105 npt,pt,nbins,mass,
"s");
3106 tProfileNew->Sumw2();
3107 list->Add( tProfileNew );
3108 TArrayD *newsw2 = tProfileNew->GetSumw2();
3109 TArrayD *newbsw2 = tProfileNew->GetBinSumw2();
3110 for(
int x=1; x!=tProfileOld->GetNbinsX()+1; ++x) {
3111 for(
int y=1; y!=tProfileNew->GetNbinsY()+1; ++y) {
3116 Int_t binnew = tProfileNew->GetBin(x,y);
3117 Double_t minmass = tProfileNew->GetYaxis()->GetBinLowEdge( y );
3118 Double_t maxmass = tProfileNew->GetYaxis()->GetBinLowEdge( y+1 );
3119 Int_t minbin = tProfileOld->GetYaxis()->FindBin( minmass+1e-10 );
3120 Int_t maxbin = tProfileOld->GetYaxis()->FindBin( maxmass-1e-10 );
3121 for(
int k=minbin; k!=maxbin+1; ++k) {
3122 Int_t binold = tProfileOld->GetBin(x,k);
3123 Double_t wk = tProfileOld->GetBinEntries( binold );
3124 Double_t yk = tProfileOld->GetBinContent( binold );
3127 sSqWeigh += oldsw2->At(binold);
3128 if(oldbsw2->GetSize()) sSqBWeig += oldbsw2->At(binold);
3130 tProfileNew->SetBinEntries( binnew, sEntries );
3131 tProfileNew->SetBinContent( binnew, sContent );
3132 newsw2->SetAt(sSqWeigh, binnew);
3133 if(oldbsw2->GetSize()) newbsw2->SetAt(sSqBWeig, binnew);
3139 TString th2ds[15] = {
"QC_HisPt_P",
"QC_HistPt_Q",
"SP_vnVZEA",
"SP_vnVZEC",
"SP_vnTPCA",
3140 "SP_vnTPCC",
"QC_Cum2",
"QC_Cum4",
"QC_DCum2",
"QC_DCum4",
3141 "SP_vnVZEGA",
"SP_vnVZEWA",
"SP_vnTPCAA",
"QC_vn2",
"QC_vn4"};
3142 for(
int i=0; i!=15; ++i) {
3187 TProfile *pCos = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ));
3188 TProfile *pSin = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ));
3189 TProfile *qCos = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ));
3190 TProfile *qSin = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ));
3191 TProfile *q2hCos = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ));
3192 TProfile *q2hSin = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ));
3194 printf(
"**QCStoreTrackVn( %s )\n",name.Data());
3195 printf(
" Read %.0f entries in p set and %.0f entries in q set\n",pCos->GetEntries(),qCos->GetEntries());
3196 printf(
" pCos[5] %.16f | pSin[5] %.16f \n", pCos->GetBinContent(5), pSin->GetBinContent(5));
3197 printf(
" qCos[5] %.16f | qSin[5] %.16f \n", qCos->GetBinContent(5), qSin->GetBinContent(5));
3198 printf(
" q2hCos[5] %.16f | q2hSin[5] %.16f \n", q2hCos->GetBinContent(5), q2hSin->GetBinContent(5));
3201 TProfile *c2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
3202 TProfile *c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
3203 TProfile *dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
3204 TProfile *dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
3205 TProfile *c2c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
3206 TProfile *c2dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
3207 TProfile *c2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
3208 TProfile *c4dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
3209 TProfile *c4dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
3210 TProfile *dc2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
3213 double tpc_qsqr = tpc_qcos*tpc_qcos + tpc_qsin*tpc_qsin;
3216 int n = c2->GetNbinsX();
3217 for(
int i=1; i!=n+1; ++i) {
3218 double mp = pCos->GetBinEntries( i );
3219 if( mp<1 ) {
if(
fDebug>2) printf(
" bin %d:: mp (%.16f) < 1!\n",i,mp);
continue; }
3220 double mm1 = tpc_qmul*(tpc_qmul-1);
3221 if( mm1<1e-100 ) {
if(
fDebug>2) printf(
" bin %d:: mm1<1e-100!\n",i);
continue; }
3222 double mq = qCos->GetBinEntries( i );
3223 double mpmmq = mp*tpc_qmul-mq;
3224 if( mpmmq<1e-100 ) {
if(
fDebug>2) printf(
" bin %d:: mpmmq<1e-100!\n",i);
continue; }
3225 double pt = c2->GetBinCenter( i );
3226 double pcos = pCos->GetBinContent( i )*mp;
3227 double psin = pSin->GetBinContent( i )*mp;
3228 double qcos = qCos->GetBinContent( i )*mq;
3229 double qsin = qSin->GetBinContent( i )*mq;
3230 double q2hcos = q2hCos->GetBinContent( i )*mq;
3231 double q2hsin = q2hSin->GetBinContent( i )*mq;
3232 double pQ = pcos*tpc_qcos+psin*tpc_qsin;
3233 double q2nQnQn = (qcos*tpc_qcos + qsin*tpc_qsin)*tpc_qcos + (qsin*tpc_qcos-qcos*tpc_qsin)*tpc_qsin;
3234 double pnQnQ2n = (pcos*tpc_qcos - psin*tpc_qsin)*
fQTPC2hCos + (psin*tpc_qcos+pcos*tpc_qsin)*
fQTPC2hSin;
3235 double tC2 = (tpc_qsqr-tpc_qmul)/mm1;
3236 double tDC2 = (pQ-mq)/mpmmq;
3237 c2->Fill( pt, tC2, mm1 );
3238 dc2->Fill( pt, tDC2, mpmmq );
3239 c2dc2->Fill( pt, tC2*tDC2, mm1*mpmmq );
3240 double mm1m2m3 = tpc_qmul*(tpc_qmul-1)*(tpc_qmul-2)*(tpc_qmul-3);
3241 if(mm1m2m3<1e-100)
continue;
3242 double mpm3mqm1m2 = (mp*tpc_qmul-3*mq)*(tpc_qmul-1)*(tpc_qmul-2);
3243 if(mpm3mqm1m2<1e-100)
continue;
3244 double req2hqnqn =
fQTPC2hCos*(tpc_qcos*tpc_qcos-tpc_qsin*tpc_qsin)+2*fQTPC2hSin*tpc_qcos*tpc_qsin;
3245 double tC4 = (tpc_qsqr*tpc_qsqr + tpc_q2hsqr - 2*req2hqnqn - 2*(2*tpc_qsqr*(tpc_qmul-2)-tpc_qmul*(tpc_qmul-3)))/mm1m2m3;
3246 double tDC4 = pQ*tpc_qsqr -q2nQnQn -pnQnQ2n -2*(tpc_qmul-1)*pQ -2*mq*(tpc_qsqr-tpc_qmul+3) +6*(qcos*tpc_qcos+qsin*tpc_qsin) +(q2hcos*
fQTPC2hCos+q2hsin*fQTPC2hSin);
3248 c4->Fill( pt, tC4, mm1m2m3 );
3249 dc4->Fill( pt, tDC4, mpm3mqm1m2 );
3250 c2c4->Fill( pt, tC2*tC4, mm1*mm1m2m3 );
3251 c2dc4->Fill( pt, tC2*tDC4, mm1*mpm3mqm1m2 );
3252 c4dc2->Fill( pt, tC4*tDC2, mm1m2m3*mpmmq );
3253 c4dc4->Fill( pt, tC4*tDC4, mm1m2m3*mpm3mqm1m2 );
3254 dc2dc4->Fill( pt, tDC2*tDC4, mpmmq*mpm3mqm1m2 );
3257 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Reset();
3258 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Reset();
3259 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Reset();
3260 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Reset();
3261 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Reset();
3262 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Reset();
3267 TProfile2D *pCos = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ));
3268 TProfile2D *pSin = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ));
3269 TProfile2D *qCos = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ));
3270 TProfile2D *qSin = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ));
3271 TProfile2D *q2hCos = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ));
3272 TProfile2D *q2hSin = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ));
3274 printf(
"**QCStoreTrackVn( %s )\n",name.Data());
3275 printf(
" Read %.0f entries in p set and %.0f entries in q set\n",pCos->GetEntries(),qCos->GetEntries());
3276 printf(
" pCos[5][5] %.16f | pSin[5][5] %.16f \n", pCos->GetBinContent(5,5), pSin->GetBinContent(5,5));
3277 printf(
" qCos[5][5] %.16f | qSin[5][5] %.16f \n", qCos->GetBinContent(5,5), qSin->GetBinContent(5,5));
3278 printf(
" q2hCos[5][5] %.16f | q2hSin[5][5] %.16f \n", q2hCos->GetBinContent(5,5), q2hSin->GetBinContent(5,5));
3281 TProfile2D *c2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
3282 TProfile2D *c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
3283 TProfile2D *dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
3284 TProfile2D *dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
3285 TProfile2D *c2c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
3286 TProfile2D *c2dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
3287 TProfile2D *c2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
3288 TProfile2D *c4dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
3289 TProfile2D *c4dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
3290 TProfile2D *dc2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
3293 double tpc_qsqr = tpc_qcos*tpc_qcos + tpc_qsin*tpc_qsin;
3296 int n = c2->GetNbinsX();
3297 int m = c2->GetNbinsY();
3298 for(
int i=1; i!=n+1; ++i) {
3299 double pt = c2->GetXaxis()->GetBinCenter( i );
3300 for(
int j=1; j!=m+1; ++j) {
3301 double ms = c2->GetYaxis()->GetBinCenter( j );
3302 int k = pCos->GetBin(i,j);
3303 double mp = pCos->GetBinEntries( k );
3304 if( mp<1 ) {
if(
fDebug>2) printf(
" bin %d,%d:: mp (%.16f) < 1!\n",i,j,mp);
continue; }
3305 double mm1 = tpc_qmul*(tpc_qmul-1);
3306 if( mm1<1e-100 ) {
if(
fDebug>2) printf(
" bin %d,%d:: mm1<1e-100!\n",i,j);
continue; }
3307 double mq = qCos->GetBinEntries( k );
3308 double mpmmq = mp*tpc_qmul-mq;
3309 if( mpmmq<1e-100 ) {
if(
fDebug>2) printf(
" bin %d,%d:: mpmmq<1e-100!\n",i,j);
continue; }
3310 double pcos = pCos->GetBinContent( i,j )*mp;
3311 double psin = pSin->GetBinContent( i,j )*mp;
3312 double qcos = qCos->GetBinContent( i,j )*mq;
3313 double qsin = qSin->GetBinContent( i,j )*mq;
3314 double q2hcos = q2hCos->GetBinContent( i,j )*mq;
3315 double q2hsin = q2hSin->GetBinContent( i,j )*mq;
3316 double pQ = pcos*tpc_qcos+psin*tpc_qsin;
3317 double q2nQnQn = (qcos*tpc_qcos + qsin*tpc_qsin)*tpc_qcos + (qsin*tpc_qcos-qcos*tpc_qsin)*tpc_qsin;
3318 double pnQnQ2n = (pcos*tpc_qcos - psin*tpc_qsin)*
fQTPC2hCos + (psin*tpc_qcos+pcos*tpc_qsin)*
fQTPC2hSin;
3319 double tC2 = (tpc_qsqr-tpc_qmul)/mm1;
3320 double tDC2 = (pQ-mq)/mpmmq;
3321 c2->Fill( pt, ms, tC2, mm1 );
3322 dc2->Fill( pt, ms, tDC2, mpmmq );
3323 c2dc2->Fill( pt, ms, tC2*tDC2, mm1*mpmmq );
3324 double mm1m2m3 = tpc_qmul*(tpc_qmul-1)*(tpc_qmul-2)*(tpc_qmul-3);
3325 if(mm1m2m3<1e-100)
continue;
3326 double mpm3mqm1m2 = (mp*tpc_qmul-3*mq)*(tpc_qmul-1)*(tpc_qmul-2);
3327 if(mpm3mqm1m2<1e-100)
continue;
3328 double req2hqnqn =
fQTPC2hCos*(tpc_qcos*tpc_qcos-tpc_qsin*tpc_qsin)+2*fQTPC2hSin*tpc_qcos*tpc_qsin;
3329 double tC4 = (tpc_qsqr*tpc_qsqr + tpc_q2hsqr - 2*req2hqnqn - 2*(2*tpc_qsqr*(tpc_qmul-2)-tpc_qmul*(tpc_qmul-3)))/mm1m2m3;
3330 double tDC4 = pQ*tpc_qsqr -q2nQnQn -pnQnQ2n -2*(tpc_qmul-1)*pQ -2*mq*(tpc_qsqr-tpc_qmul+3) +6*(qcos*tpc_qcos+qsin*tpc_qsin) +(q2hcos*
fQTPC2hCos+q2hsin*fQTPC2hSin);
3332 c4->Fill( pt, ms, tC4, mm1m2m3 );
3333 dc4->Fill( pt, ms, tDC4, mpm3mqm1m2 );
3334 c2c4->Fill( pt, ms, tC2*tC4, mm1*mm1m2m3 );
3335 c2dc4->Fill( pt, ms, tC2*tDC4, mm1*mpm3mqm1m2 );
3336 c4dc2->Fill( pt, ms, tC4*tDC2, mm1m2m3*mpmmq );
3337 c4dc4->Fill( pt, ms, tC4*tDC4, mm1m2m3*mpm3mqm1m2 );
3338 dc2dc4->Fill( pt, ms, tDC2*tDC4, mpmmq*mpm3mqm1m2 );
3342 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Reset();
3343 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Reset();
3344 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Reset();
3345 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Reset();
3346 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Reset();
3347 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Reset();
3372 qaqc = (vzea_qmcos*vzec_qmcos + vzea_qmsin*vzec_qmsin);
3373 uQa = (cosn*vzea_qmcos + sinn*vzea_qmsin);
3374 uQc = (cosn*vzec_qmcos + sinn*vzec_qmsin);
3377 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQVZEA" ))->Fill( cosmc,uQa );
3378 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQVZEC" ))->Fill( cosmc,uQc );
3379 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI" ))->Fill( pt,cosmc );
3381 Double_t qaqt = (vzea_qmcos*tpc_qmcos + vzea_qmsin*tpc_qmsin);
3382 Double_t qcqt = (vzec_qmcos*tpc_qmcos + vzec_qmsin*tpc_qmsin);
3383 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" ))->Fill( pt,uQa,
fQVZEA );
3384 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" ))->Fill( pt,uQc,
fQVZEC );
3385 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" ))->Fill( pt,qaqc,
fQVZEA*
fQVZEC );
3386 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" ))->Fill( pt,qaqt,
fQVZEA*qtpc );
3387 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" ))->Fill( pt,qcqt,fQVZEC*qtpc );
3389 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" ))->Fill( pt,uQa*uQc,
fQVZEA*fQVZEC );
3390 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" ))->Fill( pt,uQa*qaqc,
fQVZEA*
fQVZEA*fQVZEC );
3391 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" ))->Fill( pt,uQc*qaqc,fQVZEC*
fQVZEA*fQVZEC );
3393 qaqc = (tpca_qmcos*tpcc_qmcos + tpca_qmsin*tpcc_qmsin);
3395 uQ = (cosn*tpca_qmcos + sinn*tpca_qmsin);
3396 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" ))->Fill( pt,uQ,
fQTPCA );
3397 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" ))->Fill( pt,uQ*qaqc,
fQTPCA*
fQTPCA*fQTPCC );
3399 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQTPCA" ))->Fill( cosmc,uQ );
3402 uQ = (cosn*tpcc_qmcos + sinn*tpcc_qmsin);
3403 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" ))->Fill( pt,uQ,fQTPCC );
3404 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" ))->Fill( pt,uQ*qaqc,fQTPCC*
fQTPCA*fQTPCC );
3406 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQTPCC" ))->Fill( cosmc,uQ );
3409 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" ))->Fill( pt,qaqc,
fQTPCA*fQTPCC );
3411 ((
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_P" ))->Fill( pt );
3412 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Fill( pt, cosn, 1.0 );
3413 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Fill( pt, sinn, 1.0 );
3415 ((
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_Q" ))->Fill( pt );
3416 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Fill( pt, cosn, 1.0 );
3417 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Fill( pt, sinn, 1.0 );
3418 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Fill( pt, cos2n, 1.0 );
3419 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Fill( pt, sin2n, 1.0 );
3424 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"DecayYield_PtMass" ))->Fill( pt,ms );
3425 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"DecayAvgPt_PtMass" ))->Fill( pt,ms,pt );
3448 qaqc = (vzea_qmcos*vzec_qmcos + vzea_qmsin*vzec_qmsin);
3449 uQa = (cosn*vzea_qmcos + sinn*vzea_qmsin);
3450 uQc = (cosn*vzec_qmcos + sinn*vzec_qmsin);
3453 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI" ))->Fill( pt,ms,cosmc );
3455 Double_t qaqt = (vzea_qmcos*tpc_qmcos + vzea_qmsin*tpc_qmsin);
3456 Double_t qcqt = (vzec_qmcos*tpc_qmcos + vzec_qmsin*tpc_qmsin);
3457 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" ))->Fill( pt,ms,uQa,
fQVZEA );
3458 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" ))->Fill( pt,ms,uQc,
fQVZEC );
3459 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" ))->Fill( pt,ms,qaqc,
fQVZEA*
fQVZEC );
3460 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" ))->Fill( pt,ms,qaqt,
fQVZEA*qtpc );
3461 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" ))->Fill( pt,ms,qcqt,fQVZEC*qtpc );
3463 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" ))->Fill( pt,ms,uQa*uQc,
fQVZEA*fQVZEC );
3464 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" ))->Fill( pt,ms,uQa*qaqc,
fQVZEA*
fQVZEA*fQVZEC );
3465 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" ))->Fill( pt,ms,uQc*qaqc,fQVZEC*
fQVZEA*fQVZEC );
3467 qaqc = (tpca_qmcos*tpcc_qmcos + tpca_qmsin*tpcc_qmsin);
3469 uQ = (cosn*tpca_qmcos + sinn*tpca_qmsin);
3470 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" ))->Fill( pt,ms,uQ,
fQTPCA );
3471 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" ))->Fill( pt,ms,uQ*qaqc,
fQTPCA*
fQTPCA*fQTPCC );
3473 uQ = (cosn*tpcc_qmcos + sinn*tpcc_qmsin);
3474 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" ))->Fill( pt,ms,uQ,fQTPCC );
3475 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" ))->Fill( pt,ms,uQ*qaqc,fQTPCC*
fQTPCA*fQTPCC );
3477 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" ))->Fill( pt,ms,qaqc,
fQTPCA*fQTPCC );
3479 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_P" ))->Fill( pt,ms );
3480 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Fill( pt, ms, cosn, 1.0 );
3481 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Fill( pt, ms, sinn, 1.0 );
3483 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_Q" ))->Fill( pt,ms );
3484 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Fill( pt, ms, cosn, 1.0 );
3485 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Fill( pt, ms, sinn, 1.0 );
3486 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Fill( pt, ms, cos2n, 1.0 );
3487 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Fill( pt, ms, sin2n, 1.0 );
3498 if(ret)
return kTRUE;
3508 TProfile *uQa, *uQc, *qaqc, *uQaqaqc, *uQcqaqc;
3509 TArrayD *pasww, *pbsww, *pcsww;
3511 printf(
"<<%s>> SP TPC\n",name.Data());
3512 uQa = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" );
3513 uQc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" );
3514 qaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" );
3515 uQaqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" );
3516 uQcqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" );
3517 pasww = uQa->GetBinSumw2();
3518 pbsww = uQc->GetBinSumw2();
3519 pcsww = qaqc->GetBinSumw2();
3521 TH1D *sptpca = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCA" );
3522 TH1D *sptpcc = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCC" );
3523 TH1D *sptpcaa = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCAA" );
3525 for(
Int_t i=1; i!=sptpcaa->GetNbinsX()+1; ++i) {
3526 sptpcaa->SetBinContent(i,0);
3527 sptpcaa->SetBinError(i,0);
3528 sptpca->SetBinContent(i,0);
3529 sptpca->SetBinError(i,0);
3530 sptpcc->SetBinContent(i,0);
3531 sptpcc->SetBinError(i,0);
3532 double a = uQa->GetBinContent(i);
3533 double b = uQc->GetBinContent(i);
3534 double c = qaqc->GetBinContent(i);
3537 if(c<1e-100)
continue;
3539 double vna = a/TMath::Sqrt(c);
3540 sptpca->SetBinContent(i,vna);
3542 double vnc = b/TMath::Sqrt(c);
3543 sptpcc->SetBinContent(i,vnc);
3545 double vn = (vna + vnc)/2.0;
3546 sptpcaa->SetBinContent(i,vn);
3548 double asw = uQa->GetBinEntries(i);
3549 double bsw = uQc->GetBinEntries(i);
3550 double csw = qaqc->GetBinEntries(i);
3551 if(asw<1e-100||bsw<1e-100||csw<1e-100)
continue;
3552 double asww = pasww->At(i);
3553 double bsww = pbsww->At(i);
3554 double csww = pcsww->At(i);
3555 if(asww<1e-100||bsww<1e-100||csww<1e-100)
continue;
3556 if((1<1e-100+asww/asw/asw)||(1<1e-100+bsww/bsw/bsw)||(1<1e-100+csww/csw/csw))
continue;
3557 if(TMath::AreEqualAbs(asww,asw*asw,1e-100)||
3558 TMath::AreEqualAbs(bsww,bsw*bsw,1e-100)||
3559 TMath::AreEqualAbs(csww,csw*csw,1e-100))
continue;
3560 double ac = uQaqaqc->GetBinContent(i);
3561 double bc = uQcqaqc->GetBinContent(i);
3562 double acsw = uQaqaqc->GetBinEntries(i);
3563 double bcsw = uQcqaqc->GetBinEntries(i);
3564 double ea = uQa->GetBinError(i)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3565 double eb = uQc->GetBinError(i)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3566 double ec = qaqc->GetBinError(i)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3570 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3571 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3572 double evna = 1.0/TMath::Abs(c) * ( ea*ea + vna*vna/TMath::Abs(c)/4.0*ec*ec - vna/TMath::Sqrt(c)*eac );
3573 double evnc = 1.0/TMath::Abs(c) * ( eb*eb + vnc*vnc/TMath::Abs(c)/4.0*ec*ec - vnc/TMath::Sqrt(c)*ebc );
3576 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3577 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3578 sptpca->SetBinError(i,evna);
3579 sptpcc->SetBinError(i,evnc);
3580 sptpcaa->SetBinError(i,TMath::Sqrt(evna*evna+evnc*evnc)/2.0);
3583 printf(
"<<%s>> SP VZE\n",name.Data());
3584 double cvzea2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEA"))->GetBinContent( 1 );
3585 double cvzec2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEC"))->GetBinContent( 1 );
3586 if( TMath::AreEqualAbs(cvzea2+cvzec2,0,1e-100) )
return;
3587 uQa = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" );
3588 uQc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" );
3589 qaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" );
3590 uQaqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" );
3591 uQcqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" );
3592 pasww = uQa->GetBinSumw2();
3593 pbsww = uQc->GetBinSumw2();
3594 pcsww = qaqc->GetBinSumw2();
3596 TProfile *qaqt = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" );
3597 TProfile *qcqt = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" );
3598 TProfile *uQauQc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" );
3600 TH1D *spvzea = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEA" );
3601 TH1D *spvzec = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEC" );
3602 TH1D *spvzega = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEGA" );
3603 TH1D *spvzewa = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEWA" );
3604 for(
Int_t i=1; i!=spvzewa->GetNbinsX()+1; ++i) {
3605 spvzega->SetBinContent(i,0);
3606 spvzega->SetBinError(i,0);
3607 spvzewa->SetBinContent(i,0);
3608 spvzewa->SetBinError(i,0);
3609 spvzea->SetBinContent(i,0);
3610 spvzea->SetBinError(i,0);
3611 spvzec->SetBinContent(i,0);
3612 spvzec->SetBinError(i,0);
3613 double asw = uQa->GetBinEntries(i);
3614 double bsw = uQc->GetBinEntries(i);
3615 double csw = qaqc->GetBinEntries(i);
3616 if(asw<1e-1||bsw<1e-1||csw<1e-1)
continue;
3617 double asww = pasww->At(i);
3618 double bsww = pbsww->At(i);
3619 double csww = pcsww->At(i);
3620 if(asww<1e-1||bsww<1e-1||csww<1e-1)
continue;
3621 if((1<asww/asw/asw)||(1<bsww/bsw/bsw)||(1<csww/csw/csw))
continue;
3622 double a = uQa->GetBinContent(i);
3623 double b = uQc->GetBinContent(i);
3624 double c = qaqc->GetBinContent(i);
3625 double at = qaqt->GetBinContent(i);
3626 double bt = qcqt->GetBinContent(i);
3627 if(TMath::AreEqualAbs(a,0,1e-10))
continue;
3628 if(TMath::AreEqualAbs(b,0,1e-10))
continue;
3629 if(TMath::AreEqualAbs(c,0,1e-10))
continue;
3630 if(TMath::AreEqualAbs(at,0,1e-10))
continue;
3631 if(TMath::AreEqualAbs(bt,0,1e-10))
continue;
3633 double aa = c*at/bt;
3634 if(aa<1e-100)
continue;
3635 double vna = a/TMath::Sqrt(aa);
3636 spvzea->SetBinContent(i,vna);
3638 double bb = c*bt/at;
3639 if(bb<1e-100)
continue;
3640 double vnc = b/TMath::Sqrt(bb);
3641 spvzec->SetBinContent(i,vnc);
3643 double vnwa = (cvzea2*vna + cvzec2*vnc) / (cvzea2+cvzec2);
3644 spvzewa->SetBinContent(i,vnwa);
3646 double vnga = a*b/
c;
3647 if(vnga<1e-100)
continue;
3648 vnga = TMath::Sqrt(vnga);
3649 spvzega->SetBinContent(i,vnga);
3651 double ab = uQauQc->GetBinContent(i);
3652 double ac = uQaqaqc->GetBinContent(i);
3653 double bc = uQcqaqc->GetBinContent(i);
3654 double absw = uQauQc->GetBinEntries(i);
3655 double acsw = uQaqaqc->GetBinEntries(i);
3656 double bcsw = uQcqaqc->GetBinEntries(i);
3657 double ea = uQa->GetBinError(i)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3658 double eb = uQc->GetBinError(i)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3659 double ec = qaqc->GetBinError(i)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3660 if(TMath::AreEqualAbs(1,absw/asw/bsw,1e-100)||TMath::AreEqualAbs(1,bcsw/bsw/csw,1e-100)||TMath::AreEqualAbs(1,acsw/asw/csw,1e-100))
continue;
3661 double eab = (ab-a*b)/(1-absw/asw/bsw)*absw/asw/bsw;
3662 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3663 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3664 double nc, nec, neac, nebc;
3669 double evna = 1.0/TMath::Abs(nc*nc*nc) * ( nc*nc*ea*ea + a*a/4.0*nec*nec - a*TMath::Abs(nc)*neac*neac );
3674 double evnc = 1.0/TMath::Abs(nc*nc*nc) * ( nc*nc*eb*eb + b*b/4.0*nec*nec - b*TMath::Abs(nc)*nebc*nebc );
3675 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3676 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3677 spvzea->SetBinError(i,evna);
3678 spvzec->SetBinError(i,evnc);
3679 double evnwa = TMath::Sqrt( cvzea2*cvzea2*evna*evna + cvzec2*cvzec2*evnc*evnc )/(cvzea2+cvzec2);
3680 spvzewa->SetBinError(i,evnwa);
3681 double evnga = 0.25/c/c * ( TMath::Abs(b*c/a)*ea*ea + TMath::Abs(a*c/b)*eb*eb + TMath::Abs(a*b/c)*ec*ec + 2*c*eab - 2*a*ebc - 2*b*eac );
3682 if(evnga>1e-100) evnga = TMath::Sqrt(evnga);
else evnga=0;
3683 spvzega->SetBinError(i,evnga);
3685 printf(
"<<%s>> QC TPC\n",name.Data());
3687 TH1D *resC2 = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum2" );
3688 TH1D *resC4 = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum4" );
3689 TH1D *resDC2= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum2" );
3690 TH1D *resDC4= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum4" );
3691 TH1D *resvn2= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn2" );
3692 TH1D *resvn4= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn4" );
3694 TProfile *c2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
3695 TProfile *c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
3696 TProfile *dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
3697 TProfile *dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
3698 TProfile *c2c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
3699 TProfile *c2dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
3700 TProfile *c2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
3701 TProfile *c4dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
3702 TProfile *c4dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
3703 TProfile *dc2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
3704 TArrayD *c2sww = c2->GetBinSumw2();
3705 TArrayD *c4sww = c4->GetBinSumw2();
3706 TArrayD *dc2sww= dc2->GetBinSumw2();
3707 TArrayD *dc4sww= dc4->GetBinSumw2();
3708 for(
Int_t i=1; i!=resvn2->GetNbinsX()+1; ++i) {
3710 double v_c2sw = c2->GetBinEntries(i);
3711 if(v_c2sw<1e-100)
continue;
3712 double v_c2sww = c2sww->At(i);
3713 double v_c2 = c2->GetBinContent(i);
3714 double e_c2 = TMath::Sqrt(v_c2sww)/v_c2sw*c2->GetBinError(i);
3717 resC2->SetBinContent(i, cum2 );
3718 resC2->SetBinError(i, ecum2 );
3720 double v_c4sw = c4->GetBinEntries(i);
3721 if(v_c4sw<1e-100)
continue;
3722 double v_c4sww = c4sww->At(i);
3723 double v_c4 = c4->GetBinContent(i);
3724 double e_c4 = TMath::Sqrt(v_c4sww)/v_c4sw*c4->GetBinError(i);
3725 double v_c2c4 = c2c4->GetBinContent(i);
3726 double v_c2c4sw = c2c4->GetBinEntries(i);
3727 if(TMath::AreEqualAbs(v_c2c4sw/v_c2sw/v_c4sw,1,1e-100))
continue;
3728 double covc2c4 = v_c2c4sw/v_c2sw/v_c4sw*(v_c2c4 - v_c2*v_c4)/(1-v_c2c4sw/v_c2sw/v_c4sw);
3729 double cum4 = v_c4 - 2*v_c2*v_c2;
3730 double ecum4= 16.0*v_c2*v_c2*e_c2*e_c2 + e_c4*e_c4 - 8.0*v_c2*covc2c4;
3731 if(ecum4<1e-100)
continue;
3732 ecum4 = TMath::Sqrt( ecum4 );
3733 resC4->SetBinContent(i, cum4 );
3734 resC4->SetBinError(i, ecum4 );
3736 double v_dc2sw = dc2->GetBinEntries(i);
3737 if(v_dc2sw<1)
continue;
3738 double v_dc2 = dc2->GetBinContent(i);
3739 double v_dc2sww = dc2sww->At(i);
3740 double e_dc2 = TMath::Sqrt(v_dc2sww)/v_dc2sw*dc2->GetBinError(i);
3741 double dcum2 = v_dc2;
3742 double edcum2= e_dc2;
3743 resDC2->SetBinContent(i, dcum2 );
3744 resDC2->SetBinError(i, edcum2 );
3746 if(v_c2<1e-100)
continue;
3747 double dv22 = v_dc2/TMath::Sqrt(v_c2);
3748 double v_c2dc2 = c2dc2->GetBinContent(i);
3749 double v_c2dc2sw = c2dc2->GetBinEntries(i);
3750 if(TMath::AreEqualAbs(v_c2dc2sw/v_c2sw/v_dc2sw,1,1e-100))
continue;
3751 double covc2dc2 = v_c2dc2sw/v_c2sw/v_dc2sw*(v_c2dc2 - v_c2*v_dc2)/(1-v_c2dc2sw/v_c2sw/v_dc2sw);
3752 double edv22 = 0.25/v_c2/v_c2/v_c2*(v_dc2*v_dc2*e_c2*e_c2 + 4*v_c2*v_c2*e_dc2*e_dc2 - 4*v_c2*v_dc2*covc2dc2);
3754 if(edv22<1e-100)
continue;
3755 edv22 = TMath::Sqrt(edv22);
3756 resvn2->SetBinContent(i,dv22);
3757 resvn2->SetBinError(i,edv22);
3759 double v_dc4sw = dc4->GetBinEntries(i);
3760 if(v_dc4sw<1)
continue;
3761 double v_dc4 = dc4->GetBinContent(i);
3762 double v_dc4sww = dc4sww->At(i);
3763 double e_dc4 = TMath::Sqrt(v_dc4sww)/v_dc4sw*dc4->GetBinError(i);
3764 double dcum4 = v_dc4 - 2*v_c2*v_dc2;
3765 double v_c2dc4 = c2dc4->GetBinContent(i);
3766 double v_c2dc4sw = c2dc4->GetBinEntries(i);
3767 if(TMath::AreEqualAbs(v_c2dc4sw/v_c2sw/v_dc4sw,1,1e-100))
continue;
3768 double covc2dc4 = v_c2dc4sw/v_c2sw/v_dc4sw*(v_c2dc4 - v_c2*v_dc4)/(1-v_c2dc4sw/v_c2sw/v_dc4sw);
3769 double v_dc2dc4 = dc2dc4->GetBinContent(i);
3770 double v_dc2dc4sw = dc2dc4->GetBinEntries(i);
3771 if(TMath::AreEqualAbs(v_dc2dc4sw/v_dc2sw/v_dc4sw,1,1e-100))
continue;
3772 double covdc2dc4 = v_dc2dc4sw/v_dc2sw/v_dc4sw*(v_dc2dc4 - v_dc2*v_dc4)/(1-v_dc2dc4sw/v_dc2sw/v_dc4sw);
3773 double edcum4= ( +4.0*v_dc2*v_dc2*e_c2*e_c2
3774 +4.0*v_c2*v_c2*e_dc2*e_dc2
3776 +8.0*v_c2*v_dc2*covc2dc2
3778 -4.0*v_c2*covdc2dc4 );
3779 if(edcum4<1e-100)
continue;
3780 edcum4 = TMath::Sqrt(edcum4);
3781 resDC4->SetBinContent(i, dcum4 );
3782 resDC4->SetBinError(i, edcum4 );
3784 if(cum4>1e-100)
continue;
3785 double dv24 = -dcum4/TMath::Power(-cum4,0.75);
3786 double dterm1 = 2*v_c2*v_c2*v_dc2 - 3*v_c2*v_dc4 + 2*v_c4*v_dc2;
3787 double dterm2 = 9.0/16.0*dcum4*dcum4;
3788 double dterm3 = 4.0*v_c2*v_c2*cum4*cum4;
3789 double dterm4 = cum4*cum4;
3790 double dterm5 = -3.0/2.0*dcum4*dterm1;
3791 double dterm6 = -4.0*v_c2*cum4*dterm1;
3792 double dterm7 = -2.0*cum4*dterm1;
3793 double dterm8 = 3.0*v_c2*cum4*dcum4;
3794 double dterm9 = 3.0/2.0*cum4*dcum4;
3795 double dterm10= 4*v_c2*cum4*cum4;
3796 double v_c4dc2 = c4dc2->GetBinContent(i);
3797 double v_c4dc2sw = c4dc2->GetBinEntries(i);
3798 if(TMath::AreEqualAbs(v_c4dc2sw/v_c4sw/v_dc2sw,1,1e-100))
continue;
3799 double covc4dc2 = v_c4dc2sw/v_c4sw/v_dc2sw*(v_c4dc2 - v_c4*v_dc2)/(1-v_c4dc2sw/v_c4sw/v_dc2sw);
3800 double v_c4dc4 = c4dc4->GetBinContent(i);
3801 double v_c4dc4sw = c4dc4->GetBinEntries(i);
3802 if(TMath::AreEqualAbs(v_c4dc4sw/v_c4sw/v_dc4sw,1,1e-100))
continue;
3803 double covc4dc4 = v_c4dc4sw/v_c4sw/v_dc4sw*(v_c4dc4 - v_c4*v_dc4)/(1-v_c4dc4sw/v_c4sw/v_dc4sw);
3804 double edv24= 1.0/TMath::Power(-cum4,3.5)*(+dterm1*dterm1*e_c2*e_c2
3813 -dterm10*covdc2dc4);
3814 if(edv24<1e-100)
continue;
3815 edv24 = TMath::Sqrt(edv24);
3816 resvn4->SetBinContent(i,dv24);
3817 resvn4->SetBinError(i,edv24);
3822 TProfile2D *uQa, *uQc, *qaqc, *uQaqaqc, *uQcqaqc;
3823 TArrayD *pasww, *pbsww, *pcsww;
3825 printf(
"<<%s>> SP TPC\n",name.Data());
3826 uQa = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" );
3827 uQc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" );
3828 qaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" );
3829 uQaqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" );
3830 uQcqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" );
3831 pasww = uQa->GetBinSumw2();
3832 pbsww = uQc->GetBinSumw2();
3833 pcsww = qaqc->GetBinSumw2();
3835 TH2D *sptpca = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCA" );
3836 TH2D *sptpcc = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCC" );
3837 TH2D *sptpcaa = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCAA" );
3839 for(
Int_t i=1; i!=sptpcaa->GetNbinsX()+1; ++i) {
3840 for(
Int_t j=1; j!=sptpcaa->GetNbinsY()+1; ++j) {
3841 sptpcaa->SetBinContent(i,j,0);
3842 sptpcaa->SetBinError(i,j,0);
3843 sptpca->SetBinContent(i,j,0);
3844 sptpca->SetBinError(i,j,0);
3845 sptpcc->SetBinContent(i,j,0);
3846 sptpcc->SetBinError(i,j,0);
3847 double a = uQa->GetBinContent(i,j);
3848 double b = uQc->GetBinContent(i,j);
3849 double c = qaqc->GetBinContent(i,j);
3852 if(c<1e-100) {printf(
"skipping i=%d, j=%d due to c=%.16f\n",i,j,c);
continue;}
3854 double vna = a/TMath::Sqrt(c);
3855 sptpca->SetBinContent(i,j,vna);
3857 double vnc = b/TMath::Sqrt(c);
3858 sptpcc->SetBinContent(i,j,vnc);
3860 double vn = (vna + vnc)/2.0;
3861 sptpcaa->SetBinContent(i,j,vn);
3863 int k = sptpcaa->GetBin(i,j);
3864 double asw = uQa->GetBinEntries(k);
3865 double bsw = uQc->GetBinEntries(k);
3866 double csw = qaqc->GetBinEntries(k);
3867 if(asw<1e-100||bsw<1e-100||csw<1e-100) {printf(
"skipping i=%d, j=%d due to asw=%f or bsw=%f or csw=%f\n",i,j,asw,bsw,csw);
continue;}
3868 double asww = pasww->At(k);
3869 double bsww = pbsww->At(k);
3870 double csww = pcsww->At(k);
3871 if(asww<1e-100||bsww<1e-100||csww<1e-100) {printf(
"skipping i=%d, j=%d due to asww=%f or bsww=%f or csww=%f\n",i,j,asww,bsww,csww);
continue;}
3872 if((1<1e-100+asww/asw/asw)||(1<1e-100+bsww/bsw/bsw)||(1<1e-100+csww/csw/csw)) {printf(
"skipping i=%d, j=%d due to COVa=%f or COVb=%f or COVc=%f\n",i,j,asww/asw/asw,bsww/bsw/bsw,csww/csw/csw);
continue;}
3873 if(TMath::AreEqualAbs(asww,asw*asw,1e-100)||
3874 TMath::AreEqualAbs(bsww,bsw*bsw,1e-100)||
3875 TMath::AreEqualAbs(csww,csw*csw,1e-100)) {printf(
"skipping i=%d, j=%d due to funny coincidence\n",i,j);
continue;}
3876 double ac = uQaqaqc->GetBinContent(i,j);
3877 double bc = uQcqaqc->GetBinContent(i,j);
3878 double acsw = uQaqaqc->GetBinEntries(k);
3879 double bcsw = uQcqaqc->GetBinEntries(k);
3880 double ea = uQa->GetBinError(i,j)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3881 double eb = uQc->GetBinError(i,j)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3882 double ec = qaqc->GetBinError(i,j)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3886 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3887 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3888 double evna = 1.0/TMath::Abs(c) * ( ea*ea + vna*vna/TMath::Abs(c)/4.0*ec*ec - vna/TMath::Sqrt(c)*eac );
3889 double evnc = 1.0/TMath::Abs(c) * ( eb*eb + vnc*vnc/TMath::Abs(c)/4.0*ec*ec - vnc/TMath::Sqrt(c)*ebc );
3892 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3893 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3894 sptpca->SetBinError(i,j,evna);
3895 sptpcc->SetBinError(i,j,evnc);
3896 sptpcaa->SetBinError(i,j,TMath::Sqrt(evna*evna+evnc*evnc)/2.0);
3900 printf(
"<<%s>> SP VZE\n",name.Data());
3901 double cvzea2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEA"))->GetBinContent( 1 );
3902 double cvzec2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEC"))->GetBinContent( 1 );
3903 if( TMath::AreEqualAbs(cvzea2+cvzec2,0,1e-100) )
return;
3904 uQa = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" );
3905 uQc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" );
3906 qaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" );
3907 uQaqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" );
3908 uQcqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" );
3909 pasww = uQa->GetBinSumw2();
3910 pbsww = uQc->GetBinSumw2();
3911 pcsww = qaqc->GetBinSumw2();
3913 TProfile2D *qaqt = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" );
3914 TProfile2D *qcqt = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" );
3915 TProfile2D *uQauQc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" );
3917 TH2D *spvzea = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEA" );
3918 TH2D *spvzec = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEC" );
3919 TH2D *spvzega = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEGA" );
3920 TH2D *spvzewa = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEWA" );
3921 for(
Int_t i=1; i!=spvzewa->GetNbinsX()+1; ++i) {
3922 for(
Int_t j=1; j!=spvzewa->GetNbinsY()+1; ++j) {
3923 spvzega->SetBinContent(i,j,0);
3924 spvzega->SetBinError(i,j,0);
3925 spvzewa->SetBinContent(i,j,0);
3926 spvzewa->SetBinError(i,j,0);
3927 spvzea->SetBinContent(i,j,0);
3928 spvzea->SetBinError(i,j,0);
3929 spvzec->SetBinContent(i,j,0);
3930 spvzec->SetBinError(i,j,0);
3931 double a = uQa->GetBinContent(i,j);
3932 double b = uQc->GetBinContent(i,j);
3933 double c = qaqc->GetBinContent(i,j);
3934 double at = qaqt->GetBinContent(i,j);
3935 double bt = qcqt->GetBinContent(i,j);
3936 if(TMath::AreEqualAbs(a,0,1e-100)) {printf(
"skipping A\n");
continue;}
3937 if(TMath::AreEqualAbs(b,0,1e-100)) {printf(
"skipping B\n");
continue;}
3938 if(TMath::AreEqualAbs(c,0,1e-100)) {printf(
"skipping C\n");
continue;}
3939 if(TMath::AreEqualAbs(at,0,1e-100)) {printf(
"skipping AT\n");
continue;}
3940 if(TMath::AreEqualAbs(bt,0,1e-100)) {printf(
"skipping CT\n");
continue;}
3942 double aa = c*at/bt;
3943 if(aa<1e-100) {printf(
"AA\n");
continue;}
3944 double vna = a/TMath::Sqrt(aa);
3945 spvzea->SetBinContent(i,j,vna);
3947 double bb = c*bt/at;
3948 if(bb<1e-100) {printf(
"BB\n");
continue;}
3949 double vnc = b/TMath::Sqrt(bb);
3950 spvzec->SetBinContent(i,j,vnc);
3952 double vnwa = (cvzea2*vna + cvzec2*vnc) / (cvzea2+cvzec2);
3953 spvzewa->SetBinContent(i,j,vnwa);
3955 double vnga = a*b/
c;
3956 if(vnga<1e-100)
continue;
3957 vnga = TMath::Sqrt(vnga);
3958 spvzega->SetBinContent(i,j,vnga);
3960 int k = spvzea->GetBin(i,j);
3961 double asw = uQa->GetBinEntries(k);
3962 double bsw = uQc->GetBinEntries(k);
3963 double csw = qaqc->GetBinEntries(k);
3964 if(asw<1e-100||bsw<1e-100||csw<1e-100)
continue;
3965 double asww = pasww->At(k);
3966 double bsww = pbsww->At(k);
3967 double csww = pcsww->At(k);
3968 if(asww<1e-100||bsww<1e-100||csww<1e-100)
continue;
3969 if((1<asww/asw/asw)||(1<bsww/bsw/bsw)||(1<csww/csw/csw))
continue;
3970 double ab = uQauQc->GetBinContent(i,j);
3971 double ac = uQaqaqc->GetBinContent(i,j);
3972 double bc = uQcqaqc->GetBinContent(i,j);
3973 double absw = uQauQc->GetBinEntries(k);
3974 double acsw = uQaqaqc->GetBinEntries(k);
3975 double bcsw = uQcqaqc->GetBinEntries(k);
3976 if(TMath::AreEqualAbs(1,absw/asw/bsw,1e-100)||TMath::AreEqualAbs(1,bcsw/bsw/csw,1e-100)||TMath::AreEqualAbs(1,acsw/asw/csw,1e-100))
continue;
3977 double ea = uQa->GetBinError(i,j)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3978 double eb = uQc->GetBinError(i,j)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3979 double ec = qaqc->GetBinError(i,j)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3980 double eab = (ab-a*b)/(1-absw/asw/bsw)*absw/asw/bsw;
3981 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3982 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3983 double nc, nec, neac, nebc;
3988 double evna = 1.0/TMath::Abs(nc*nc*nc) * ( nc*nc*ea*ea + a*a/4.0*nec*nec - a*TMath::Abs(nc)*neac*neac );
3993 double evnc = 1.0/TMath::Abs(nc*nc*nc) * ( nc*nc*eb*eb + b*b/4.0*nec*nec - b*TMath::Abs(nc)*nebc*nebc );
3994 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3995 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3996 spvzea->SetBinError(i,j,evna);
3997 spvzec->SetBinError(i,j,evnc);
3998 double evnwa = TMath::Sqrt( cvzea2*cvzea2*evna*evna + cvzec2*cvzec2*evnc*evnc )/(cvzea2+cvzec2);
3999 spvzewa->SetBinError(i,j,evnwa);
4000 double evnga = 0.25/c/c * ( TMath::Abs(b*c/a)*ea*ea + TMath::Abs(a*c/b)*eb*eb + TMath::Abs(a*b/c)*ec*ec + 2*c*eab - 2*a*ebc - 2*b*eac );
4001 if(evnga>1e-100) evnga = TMath::Sqrt(evnga);
else evnga=0;
4002 spvzega->SetBinError(i,j,evnga);
4005 printf(
"<<%s>> QC TPC\n",name.Data());
4007 TH2D *resC2 = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum2" );
4008 TH2D *resC4 = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum4" );
4009 TH2D *resDC2= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum2" );
4010 TH2D *resDC4= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum4" );
4011 TH2D *resvn2= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn2" );
4012 TH2D *resvn4= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn4" );
4014 TProfile2D *c2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
4015 TProfile2D *c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
4016 TProfile2D *dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
4017 TProfile2D *dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
4018 TProfile2D *c2c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
4019 TProfile2D *c2dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
4020 TProfile2D *c2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
4021 TProfile2D *c4dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
4022 TProfile2D *c4dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
4023 TProfile2D *dc2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
4024 TArrayD *c2sww = c2->GetBinSumw2();
4025 TArrayD *c4sww = c4->GetBinSumw2();
4026 TArrayD *dc2sww= dc2->GetBinSumw2();
4027 TArrayD *dc4sww= dc4->GetBinSumw2();
4028 for(
Int_t i=1; i!=resvn2->GetNbinsX()+1; ++i) {
4029 for(
Int_t j=1; j!=resvn2->GetNbinsY()+1; ++j) {
4031 int k = c2->GetBin(i,j);
4032 double v_c2sw = c2->GetBinEntries(k);
4033 if(v_c2sw<1e-100)
continue;
4034 double v_c2sww = c2sww->At(k);
4035 double v_c2 = c2->GetBinContent(i,j);
4036 double e_c2 = TMath::Sqrt(v_c2sww)/v_c2sw*c2->GetBinError(i,j);
4039 resC2->SetBinContent(i,j, cum2 );
4040 resC2->SetBinError(i,j, ecum2 );
4042 double v_c4sw = c4->GetBinEntries(k);
4043 if(v_c4sw<1e-100)
continue;
4044 double v_c4sww = c4sww->At(k);
4045 double v_c4 = c4->GetBinContent(i,j);
4046 double e_c4 = TMath::Sqrt(v_c4sww)/v_c4sw*c4->GetBinError(i,j);
4047 double v_c2c4 = c2c4->GetBinContent(i,j);
4048 double v_c2c4sw = c2c4->GetBinEntries(k);
4049 if(TMath::AreEqualAbs(v_c2c4sw/v_c2sw/v_c4sw,1,1e-100))
continue;
4050 double covc2c4 = v_c2c4sw/v_c2sw/v_c4sw*(v_c2c4 - v_c2*v_c4)/(1-v_c2c4sw/v_c2sw/v_c4sw);
4051 double cum4 = v_c4 - 2*v_c2*v_c2;
4052 double ecum4= 16.0*v_c2*v_c2*e_c2*e_c2 + e_c4*e_c4 - 8.0*v_c2*covc2c4;
4053 if(ecum4<1e-100)
continue;
4054 ecum4 = TMath::Sqrt( ecum4 );
4055 resC4->SetBinContent(i,j, cum4 );
4056 resC4->SetBinError(i,j, ecum4 );
4058 double v_dc2sw = dc2->GetBinEntries(k);
4059 if(v_dc2sw<1)
continue;
4060 double v_dc2 = dc2->GetBinContent(i,j);
4061 double v_dc2sww = dc2sww->At(k);
4062 double e_dc2 = TMath::Sqrt(v_dc2sww)/v_dc2sw*dc2->GetBinError(i,j);
4063 double dcum2 = v_dc2;
4064 double edcum2= e_dc2;
4065 resDC2->SetBinContent(i,j, dcum2 );
4066 resDC2->SetBinError(i,j, edcum2 );
4068 if(v_c2<1e-100)
continue;
4069 double dv22 = v_dc2/TMath::Sqrt(v_c2);
4070 double v_c2dc2 = c2dc2->GetBinContent(i,j);
4071 double v_c2dc2sw = c2dc2->GetBinEntries(k);
4072 if(TMath::AreEqualAbs(v_c2dc2sw/v_c2sw/v_dc2sw,1,1e-100))
continue;
4073 double covc2dc2 = v_c2dc2sw/v_c2sw/v_dc2sw*(v_c2dc2 - v_c2*v_dc2)/(1-v_c2dc2sw/v_c2sw/v_dc2sw);
4074 double edv22 = 0.25/v_c2/v_c2/v_c2*(v_dc2*v_dc2*e_c2*e_c2 + 4*v_c2*v_c2*e_dc2*e_dc2 - 4*v_c2*v_dc2*covc2dc2);
4076 if(edv22<1e-100)
continue;
4077 edv22 = TMath::Sqrt(edv22);
4078 resvn2->SetBinContent(i,j,dv22);
4079 resvn2->SetBinError(i,j,edv22);
4081 double v_dc4sw = dc4->GetBinEntries(k);
4082 if(v_dc4sw<1)
continue;
4083 double v_dc4 = dc4->GetBinContent(i,j);
4084 double v_dc4sww = dc4sww->At(k);
4085 double e_dc4 = TMath::Sqrt(v_dc4sww)/v_dc4sw*dc4->GetBinError(i,j);
4086 double dcum4 = v_dc4 - 2*v_c2*v_dc2;
4087 double v_c2dc4 = c2dc4->GetBinContent(i,j);
4088 double v_c2dc4sw = c2dc4->GetBinEntries(k);
4089 if(TMath::AreEqualAbs(v_c2dc4sw/v_c2sw/v_dc4sw,1,1e-100))
continue;
4090 double covc2dc4 = v_c2dc4sw/v_c2sw/v_dc4sw*(v_c2dc4 - v_c2*v_dc4)/(1-v_c2dc4sw/v_c2sw/v_dc4sw);
4091 double v_dc2dc4 = dc2dc4->GetBinContent(i,j);
4092 double v_dc2dc4sw = dc2dc4->GetBinEntries(k);
4093 if(TMath::AreEqualAbs(v_dc2dc4sw/v_dc2sw/v_dc4sw,1,1e-100))
continue;
4094 double covdc2dc4 = v_dc2dc4sw/v_dc2sw/v_dc4sw*(v_dc2dc4 - v_dc2*v_dc4)/(1-v_dc2dc4sw/v_dc2sw/v_dc4sw);
4095 double edcum4= ( +4.0*v_dc2*v_dc2*e_c2*e_c2
4096 +4.0*v_c2*v_c2*e_dc2*e_dc2
4098 +8.0*v_c2*v_dc2*covc2dc2
4100 -4.0*v_c2*covdc2dc4 );
4101 if(edcum4<1e-100)
continue;
4102 edcum4 = TMath::Sqrt(edcum4);
4103 resDC4->SetBinContent(i,j, dcum4 );
4104 resDC4->SetBinError(i,j, edcum4 );
4106 if(cum4>1e-100)
continue;
4107 double dv24 = -dcum4/TMath::Power(-cum4,0.75);
4108 double dterm1 = 2*v_c2*v_c2*v_dc2 - 3*v_c2*v_dc4 + 2*v_c4*v_dc2;
4109 double dterm2 = 9.0/16.0*dcum4*dcum4;
4110 double dterm3 = 4.0*v_c2*v_c2*cum4*cum4;
4111 double dterm4 = cum4*cum4;
4112 double dterm5 = -3.0/2.0*dcum4*dterm1;
4113 double dterm6 = -4.0*v_c2*cum4*dterm1;
4114 double dterm7 = -2.0*cum4*dterm1;
4115 double dterm8 = 3.0*v_c2*cum4*dcum4;
4116 double dterm9 = 3.0/2.0*cum4*dcum4;
4117 double dterm10= 4*v_c2*cum4*cum4;
4118 double v_c4dc2 = c4dc2->GetBinContent(i,j);
4119 double v_c4dc2sw = c4dc2->GetBinEntries(k);
4120 if(TMath::AreEqualAbs(v_c4dc2sw/v_c4sw/v_dc2sw,1,1e-100))
continue;
4121 double covc4dc2 = v_c4dc2sw/v_c4sw/v_dc2sw*(v_c4dc2 - v_c4*v_dc2)/(1-v_c4dc2sw/v_c4sw/v_dc2sw);
4122 double v_c4dc4 = c4dc4->GetBinContent(i,j);
4123 double v_c4dc4sw = c4dc4->GetBinEntries(k);
4124 if(TMath::AreEqualAbs(v_c4dc4sw/v_c4sw/v_dc4sw,1,1e-100))
continue;
4125 double covc4dc4 = v_c4dc4sw/v_c4sw/v_dc4sw*(v_c4dc4 - v_c4*v_dc4)/(1-v_c4dc4sw/v_c4sw/v_dc4sw);
4126 double edv24= 1.0/TMath::Power(-cum4,3.5)*(+dterm1*dterm1*e_c2*e_c2
4135 -dterm10*covdc2dc4);
4136 if(edv24<1e-100)
continue;
4137 edv24 = TMath::Sqrt(edv24);
4138 resvn4->SetBinContent(i,j,dv24);
4139 resvn4->SetBinError(i,j,edv24);
4150 tList=
new TList(); tList->SetName(
"ToyVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
4172 TF1 tf1_tpca(
"dphitpca", Form(
"1+2*%f*TMath::Cos(2*x)",v_tpca),0,TMath::TwoPi() );
4173 TF1 tf1_tpcc(
"dphitpcc", Form(
"1+2*%f*TMath::Cos(2*x)",v_tpcc),0,TMath::TwoPi() );
4174 TF1 tf1_vzea(
"dphivzea", Form(
"1+2*%f*TMath::Cos(2*x)",v_vzea),0,TMath::TwoPi() );
4175 TF1 tf1_vzec(
"dphivzec", Form(
"1+2*%f*TMath::Cos(2*x)",v_vzec),0,TMath::TwoPi() );
4176 TF1 tf1_decay(
"dphidecay", Form(
"1+2*%f*TMath::Cos(2*x)",v_decay),0,TMath::TwoPi() );
4177 TF1 tf1_bgr(
"dphibgr", Form(
"1+2*%f*TMath::Cos(2*x)",v_bgr),0,TMath::TwoPi() );
4184 for(
int m=0; m!=mtpc_a; ++m) {
4185 phi = tf1_tpca.GetRandom() +
fMCEP;
4186 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4196 for(
int m=0; m!=mtpc_c; ++m) {
4197 phi = tf1_tpcc.GetRandom() +
fMCEP;
4198 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4208 for(
int m=0; m!=mvze_a; ++m) {
4209 phi = tf1_vzea.GetRandom() +
fMCEP;
4210 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4217 for(
int m=0; m!=mvze_c; ++m) {
4218 phi = tf1_vzec.GetRandom() +
fMCEP;
4219 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4233 for(
int m=0; m!=m_decay; ++m) {
4234 phi = tf1_decay.GetRandom() +
fMCEP;
4235 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4236 eta =
gRandom->Rndm()*1.6-0.8;
4237 pt =
gRandom->Rndm()*ptrange + fPtBinEdge[0];
4238 mass =
gRandom->Gaus(mass_decay_mu,mass_decay_sg);
4241 for(
int m=0; m!=m_bgr; ++m) {
4242 phi = tf1_bgr.GetRandom() +
fMCEP;
4243 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4244 eta =
gRandom->Rndm()*1.6-0.8;
4245 pt =
gRandom->Rndm()*ptrange + fPtBinEdge[0];