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 fsharedITSCluster(0),
226 fchi2perClusterITS(0),
227 fcounterForSharedCluster(0),
228 fDaughterMatchPhi(0.0),
229 fDaughterMatchEta(0.0),
230 fDaughterMatchPt(0.0),
231 fDaughterMatchImpactParameterXY(0.0),
232 fDaughterMatchImpactParameterZ(0.0),
233 fDaughterUnTag(kTRUE),
234 fDaughterMinEta(0.0),
235 fDaughterMaxEta(0.0),
237 fDaughterMinNClsTPC(0),
238 fDaughterMinNClsITS(-1),
239 fDaughterMinXRows(0),
240 fDaughterMaxChi2PerNClsTPC(0.0),
241 fDaughterMinXRowsOverNClsFTPC(0.0),
242 fDaughterMinImpactParameterXY(0.0),
243 fDaughterMaxNSigmaPID(0.0),
244 fDaughterSPDRequireAny(kFALSE),
245 fDaughterITSrefit(kFALSE),
246 fMaxchi2perITSCluster(0),
247 fmaxSharedITSCluster(0)
250 for(
Int_t i=0; i!=100; ++i) fPtBinEdge[i]=0;
251 for(
Int_t i=0; i!=6; ++i) fDaughterITSConfig[i]=-1;
252 for(
Int_t i=0; i!=2000; ++i) fQTPCA_fID[i]=-1;
253 for(
Int_t i=0; i!=2000; ++i) fQTPCC_fID[i]=-1;
254 for(
Int_t i=0; i!=64; ++i) fVZEextW[i]=1;
272 fAddPiToMCReactionPlane(kTRUE),
275 fSkipSelection(kFALSE),
280 fExtraEventRejection(kFALSE),
281 fSkipCentralitySelection(kFALSE),
282 fCentMethod(
"V0MTRK"),
295 fExcludeTPCEdges(kFALSE),
330 fSkipTerminate(kTRUE),
350 fDecayDCAdaughters(0.0),
351 fDecayCosinePointingAngleXY(0.0),
353 fDecayDecayLength(0.0),
354 fDecayDecayLengthLab(0.0),
358 fDecayProductIPXY(0.0),
366 fDecayMatchOrigin(0.0),
370 fDecayMatchRadXY(0.0),
374 fDecayMaxDCAdaughters(0.0),
375 fDecayMinCosinePointingAngleXY(0.0),
377 fDecayAPCutPie(kTRUE),
378 fDecayStopPIDAtPt(3.0),
380 fDecayMaxDecayLength(0.0),
381 fDecayMaxProductIPXY(0.0),
382 fDecayMaxRapidity(0.0),
389 fDaughterNFClsTPC(0),
390 fDaughterNSClsTPC(0),
391 fDaughterChi2PerNClsTPC(0.0),
393 fDaughterImpactParameterXY(0.0),
394 fDaughterImpactParameterZ(0.0),
397 fDaughterNSigmaPID(0.0),
398 fDaughterKinkIndex(0),
399 fDaughterAtSecPhi(0.0),
400 fDaughterAtSecEta(0.0),
401 fDaughterAtSecPt(0.0),
402 fsharedITSCluster(0),
403 fchi2perClusterITS(0),
404 fcounterForSharedCluster(0),
405 fDaughterMatchPhi(0.0),
406 fDaughterMatchEta(0.0),
407 fDaughterMatchPt(0.0),
408 fDaughterMatchImpactParameterXY(0.0),
409 fDaughterMatchImpactParameterZ(0.0),
410 fDaughterUnTag(kTRUE),
411 fDaughterMinEta(0.0),
412 fDaughterMaxEta(0.0),
414 fDaughterMinNClsTPC(0),
415 fDaughterMinNClsITS(-1),
416 fDaughterMinXRows(0),
417 fDaughterMaxChi2PerNClsTPC(0.0),
418 fDaughterMinXRowsOverNClsFTPC(0.0),
419 fDaughterMinImpactParameterXY(0.0),
420 fDaughterMaxNSigmaPID(0.0),
421 fDaughterSPDRequireAny(kFALSE),
422 fDaughterITSrefit(kFALSE),
423 fMaxchi2perITSCluster(0),
424 fmaxSharedITSCluster(0)
432 DefineInput( 0,TChain::Class());
433 DefineOutput(1,TList::Class());
434 DefineOutput(2,AliFlowEventSimple::Class());
435 DefineOutput(3,AliFlowEventSimple::Class());
452 if(!lst)
return NULL;
463 printf(
"******************************\n");
464 printf(
"<TASK Configuration> %s\n",GetName());
465 printf(
" fDebug %d\n",
fDebug);
472 printf(
" fRunOnpA %s\n",
fRunOnpA?
"kTRUE":
"kFALSE");
473 printf(
" fRunOnpp %s\n",
fRunOnpp?
"kTRUE":
"kFALSE");
474 printf(
" fReadESD %s\n",
fReadESD?
"kTRUE":
"kFALSE");
475 printf(
" fReadMC %s\n",
fReadMC?
"kTRUE":
"kFALSE");
479 printf(
" fAvoidExec %s\n",
fAvoidExec?
"kTRUE":
"kFALSE");
482 printf(
" fVZEsave %s\n",
fVZEsave?
"kTRUE":
"kFALSE");
484 printf(
" fVZEload %d runs\n",
fVZEload->GetEntries());
485 printf(
" fVZEmb %s\n",
fVZEmb?
"kTRUE":
"kFALSE");
486 printf(
" fVZEByDisk %s\n",
fVZEByDisk?
"kTRUE":
"kFALSE");
490 printf(
" fVZECa %d\n",
fVZECa);
491 printf(
" fVZECb %d\n",
fVZECb);
492 printf(
" fVZEAa %d\n",
fVZEAa);
493 printf(
" fVZEAb %d\n",
fVZEAb);
508 printf(
" fSpecie %d\n",
fSpecie);
509 printf(
" fPtBins %d\n |",
fPtBins);
517 printf(
" fSkipVn %s\n",
fSkipVn?
"kTRUE":
"kFALSE");
519 printf(
" fUseFP %s\n",
fUseFP?
"kTRUE":
"kFALSE");
526 printf(
"==================================\n");
527 printf(
"<FlowStrange> \n");
530 printf(
" fOnline %s\n",
fOnline?
"kTRUE":
"kFALSE");
531 printf(
" fHomemade %s\n",
fHomemade?
"kTRUE":
"kFALSE");
579 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
605 tList=
new TList(); tList->SetName(
"ESD_TrkAll"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
606 tList=
new TList(); tList->SetName(
"ESD_TrkSel"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
607 tH2D =
new TH2D(
"NPAIR",
"NPAIR;NPOS;NNEG",1000,0,5000,1000,0,5000); tList->Add(tH2D);
608 tH2D =
new TH2D(
"PtIPXY",
"PtIPXY;Pt;IPxy", 100,0,10,200,-10,+10); tList->Add(tH2D);
612 tH2D =
new TH2D(
"V0SADC",
"V0S AFTER DAUGHTER CUTS;V0ALL;V0IMW",100,0,1000,100,0,1000); tList->Add(tH2D);
613 tList=
new TList(); tList->SetName(
"AllDau"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
616 tList=
new TList(); tList->SetName(
"SelDau"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
619 tList=
new TList(); tList->SetName(
"V0SAllVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
620 tList=
new TList(); tList->SetName(
"V0SSelVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
631 tList=
new TList(); tList->SetName(
"STATMC"); tList->SetOwner();
fList->Add(tList);
632 tH1D =
new TH1D(
"Events",
"Events",5,0.5,5.5); tList->Add(tH1D);
633 tH1D->GetXaxis()->SetBinLabel(1,
"Selected events");
634 tH1D->GetXaxis()->SetBinLabel(2,
"Stack found");
635 tH1D->GetXaxis()->SetBinLabel(3,
"Daughters in stack");
636 tH1D->GetXaxis()->SetBinLabel(4,
"Correspond to decay");
637 tH1D->GetXaxis()->SetBinLabel(5,
"Decay has mother");
639 tList=
new TList(); tList->SetName(
"MthDau"); tList->SetOwner();
AddTrackSpy(tList,
true);
fList->Add(tList);
643 tList=
new TList(); tList->SetName(
"MthNegDau"); tList->SetOwner();
AddTrackSpy(tList,
true);
fList->Add(tList);
644 tList=
new TList(); tList->SetName(
"MthPosDau"); tList->SetOwner();
AddTrackSpy(tList,
true);
fList->Add(tList);
647 tList=
new TList(); tList->SetName(
"UnMthDau"); tList->SetOwner();
AddTrackSpy(tList,
false);
fList->Add(tList);
649 tList=
new TList(); tList->SetName(
"V0SMthVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
650 tList=
new TList(); tList->SetName(
"V0SMthPosPosVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
651 tList=
new TList(); tList->SetName(
"V0SMthNegNegVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
652 tList=
new TList(); tList->SetName(
"V0SMthPosNegVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
653 tList=
new TList(); tList->SetName(
"V0SUnMthVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
663 tQAEvents->SetName(
"Event");
664 tQAEvents->SetOwner();
665 tH1D =
new TH1D(
"Events",
"Number of Events",6,0,6); tQAEvents->Add(tH1D);
666 tH1D->GetXaxis()->SetBinLabel(1,
"exec");
667 tH1D->GetXaxis()->SetBinLabel(2,
"userexec");
668 tH1D->GetXaxis()->SetBinLabel(3,
"reached");
669 tH1D->GetXaxis()->SetBinLabel(4,
"selected");
670 tH1D->GetXaxis()->SetBinLabel(5,
"rejectedByLowQw");
671 tH1D->GetXaxis()->SetBinLabel(6,
"rejectedByErrorLoadVZEcal");
672 tProfile =
new TProfile(
"Configuration",
"Configuration",10,0.5,10.5); tQAEvents->Add(tProfile);
674 tProfile->GetXaxis()->SetBinLabel(
kSpecie,
"fSpecie");
676 tProfile->GetXaxis()->SetBinLabel(
kHarmonic,
"fHarmonic");
678 tProfile->GetXaxis()->SetBinLabel(
kReadMC,
"fReadMC");
680 tProfile->GetXaxis()->SetBinLabel(
kSkipSelection,
"fSkipSelection");
681 tH1D =
new TH1D(
"POI",
"POIs;multiplicity",800,0,800); tQAEvents->Add(tH1D);
682 tH1D =
new TH1D(
"UNTAG",
"UNTAG;Untagged Daughters",800,0,800);tQAEvents->Add(tH1D);
683 tH1D =
new TH1D(
"RealTime",
"RealTime;LogT sec",2000,-10,+10); tQAEvents->Add(tH1D);
684 fList->Add(tQAEvents);
697 tList->SetName(name.Data());
699 tH2D =
new TH2D(
"VTXZ",
"VTXZ;PriVtxZ;SPDVtxZ",60,-25,+25,60,-25,+25); tList->Add( tH2D );
700 tH2D =
new TH2D(
"CCCC",
"CCCC;V0M;TRK",60,-10,110,60,-10,110); tList->Add( tH2D );
701 tH2D =
new TH2D(
"HYBTPC",
"HYBTPC;TPC ONLY;HYBRID",100,0,3000,100,0,3000); tList->Add( tH2D );
702 tH1D =
new TH1D(
"HYBTPCRat",
"HYBTPCRat;TPC/HYB",120,0.2,2.2); tList->Add( tH1D );
703 tH2D =
new TH2D(
"SPDVZE",
"SPDVZE;SPD Tracklets;Total Multiplicity in VZERO",100,0,3500,100,0,25000); tList->Add( tH2D );
704 tH1D =
new TH1D(
"SPDVZERat",
"SPDVZERat;TotalMultiplicityVZERO/SPDTracklets",120,2,+12); tList->Add( tH1D );
706 tH1D =
new TH1D(
"MCEP",
"MCEP;MCEP",100,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
730 tList->SetName(
"MakeQSpy");
733 tH1D =
new TH1D(
"RFPTPC",
"TPC Refrence Multiplicity;multiplicity",3000,0,3000); tList->Add( tH1D );
734 tH1D =
new TH1D(
"RFPVZE",
"VZERO Reference Multiplicity;multiplicity",3000,0,30000); tList->Add( tH1D );
735 tH1D =
new TH1D(
"QmTPC",
"TPC Normalized Q vector;|Q|/#sqrt{M}",360,0,7); tList->Add( tH1D );
736 tH1D =
new TH1D(
"QmVZEA",
"VZEROA Normalized Q vector;|Q|/#sqrt{W}",360,0,7); tList->Add( tH1D );
737 tH1D =
new TH1D(
"QmVZEC",
"VZEROC Normalized Q vector;|Q|/#sqrt{W}",360,0,7); tList->Add( tH1D );
738 tH2D =
new TH2D(
"TPCAllPhiEta",
"TPCall;Phi;Eta",180,0,TMath::TwoPi(),80,-0.9,+0.9); tList->Add( tH2D );
739 tH2D =
new TH2D(
"VZEAllPhiEta",
"VZEall;Phi;Eta",20,0,TMath::TwoPi(),40,-4.0,+6.0); tList->Add( tH2D );
740 tH1D =
new TH1D(
"TPCPSI",
"TPCPSI;PSI",72,0,TMath::Pi()); tList->Add( tH1D );
741 tH1D =
new TH1D(
"TPCPSIA",
"TPCPSIA;PSIA",72,0,TMath::Pi()); tList->Add( tH1D );
742 tH1D =
new TH1D(
"TPCPSIC",
"TPCPSIC;PSIC",72,0,TMath::Pi()); tList->Add( tH1D );
743 tH1D =
new TH1D(
"VZEPSI",
"VZEPSI;PSI",72,0,TMath::Pi()); tList->Add( tH1D );
744 tH1D =
new TH1D(
"VZEPSIA",
"VZEPSIA;PSIA",72,0,TMath::Pi()); tList->Add( tH1D );
745 tH1D =
new TH1D(
"VZEPSIC",
"VZEPSIC;PSIC",72,0,TMath::Pi()); tList->Add( tH1D );
746 tH2D =
new TH2D(
"PSI_TPCAVZEC",
"PSI_TPCAVZEC",72,0,TMath::Pi(),72,0,TMath::Pi()); tList->Add( tH2D );
747 tH2D =
new TH2D(
"PSI_TPCCVZEA",
"PSI_TPCAVZEC",72,0,TMath::Pi(),72,0,TMath::Pi()); tList->Add( tH2D );
748 tH2D =
new TH2D(
"PSI_TPCVZE",
"PSI_TPCVZE",72,0,TMath::Pi(),72,0,TMath::Pi()); tList->Add( tH2D );
749 tPF1 =
new TProfile(
"TPCQm",
"TPCQm",6,0.5,6.5); tList->Add( tPF1 );
750 tPF1->GetXaxis()->SetBinLabel(1,
"Qcy"); tPF1->GetXaxis()->SetBinLabel(2,
"Qcx");
751 tPF1->GetXaxis()->SetBinLabel(3,
"Qay"); tPF1->GetXaxis()->SetBinLabel(4,
"Qax");
752 tPF1->GetXaxis()->SetBinLabel(5,
"Qy"); tPF1->GetXaxis()->SetBinLabel(6,
"Qx");
753 tPF1 =
new TProfile(
"VZEQm",
"VZEQm",6,0.5,6.5); tList->Add( tPF1 );
754 tPF1->GetXaxis()->SetBinLabel(1,
"Qcy"); tPF1->GetXaxis()->SetBinLabel(2,
"Qcx");
755 tPF1->GetXaxis()->SetBinLabel(3,
"Qay"); tPF1->GetXaxis()->SetBinLabel(4,
"Qax");
756 tPF1->GetXaxis()->SetBinLabel(5,
"Qy"); tPF1->GetXaxis()->SetBinLabel(6,
"Qx");
757 tPF1 =
new TProfile(
"QmVZEAQmVZEC",
"QmVZEAQmVZEC",1,0.5,1.5,
"s"); tList->Add( tPF1 );
758 tPF1 =
new TProfile(
"QmVZEASQUARED",
"QmVZEASQUARED",1,0.5,1.5,
"s"); tList->Add( tPF1 );
759 tPF1 =
new TProfile(
"QmVZECSQUARED",
"QmVZECSQUARED",1,0.5,1.5,
"s"); tList->Add( tPF1 );
760 tPF1 =
new TProfile(
"QmTPCQmVZEA",
"QmTPCQmVZEA",1,0.5,1.5,
"s"); tList->Add( tPF1 );
761 tPF1 =
new TProfile(
"QmTPCQmVZEC",
"QmTPCQmVZEC",1,0.5,1.5,
"s"); tList->Add( tPF1 );
762 tH1D =
new TH1D(
"ChiSquaredVZEA",
"ChiSquaredVZEC",1,0.5,1.5); tList->Add( tH1D );
763 tH1D =
new TH1D(
"ChiSquaredVZEC",
"ChiSquaredVZEC",1,0.5,1.5); tList->Add( tH1D );
765 tH1D =
new TH1D(
"PSIMCDIFFTPC",
"PSIMCDIFFTPC;MC-TPC",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
766 tH1D =
new TH1D(
"PSIMCDIFFTPCA",
"PSIMCDIFFTPCA;MC-TPCA",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
767 tH1D =
new TH1D(
"PSIMCDIFFTPCC",
"PSIMCDIFFTPCC;MC-TPCC",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
768 tH1D =
new TH1D(
"PSIMCDIFFVZE",
"PSIMCDIFFVZE;MC-VZE",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
769 tH1D =
new TH1D(
"PSIMCDIFFVZEA",
"PSIMCDIFFVZEA;MC-VZEA",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
770 tH1D =
new TH1D(
"PSIMCDIFFVZEC",
"PSIMCDIFFVZEC;MC-VZEC",72,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );
772 tList=
new TList(); tList->SetName(
"TPCRFPall"); tList->SetOwner();
AddTPCRFPSpy(tList);
fList->Add(tList);
773 tList=
new TList(); tList->SetName(
"TPCRFPsel"); tList->SetOwner();
AddTPCRFPSpy(tList);
fList->Add(tList);
784 tList=
new TList(); tList->SetName(
"TrkAll"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
785 tList=
new TList(); tList->SetName(
"TrkSel"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
787 tList=
new TList(); tList->SetName(
"TrkAllVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
788 tList=
new TList(); tList->SetName(
"TrkSelVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
792 tList=
new TList(); tList->SetName(
"STATMC"); tList->SetOwner();
fList->Add(tList);
793 tH1D =
new TH1D(
"Events",
"Events",3,0.5,3.5); tList->Add(tH1D);
794 tH1D->GetXaxis()->SetBinLabel(1,
"Selected events");
795 tH1D->GetXaxis()->SetBinLabel(2,
"Stack found");
796 tH1D->GetXaxis()->SetBinLabel(3,
"Track in stack");
798 tList=
new TList(); tList->SetName(
"MthPos"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
799 tList=
new TList(); tList->SetName(
"MthNeg"); tList->SetOwner();
AddTrackSpy(tList);
fList->Add(tList);
801 tList=
new TList(); tList->SetName(
"MthVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
802 tList=
new TList(); tList->SetName(
"MthPosVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
803 tList=
new TList(); tList->SetName(
"MthNegVn"); tList->SetOwner();
AddTrackVn(tList);
fList->Add(tList);
832 AliAnalysisTaskSE::Exec(option);
860 Double_t tTPCVtxZ = tESD->GetPrimaryVertex()->GetZ();
861 if(tESD->GetPrimaryVertex()->GetNContributors()<=0)
return kFALSE;
862 Double_t tSPDVtxZ = tESD->GetPrimaryVertexSPD()->GetZ();
863 if(tESD->GetPrimaryVertexSPD()->GetNContributors()<=0)
return kFALSE;
865 AliCentrality *cent = tESD->GetCentrality();
867 cc1 = cent->GetCentralityPercentile(
"V0M");
868 cc2 = cent->GetCentralityPercentile(
"TRK");
871 acceptEvent = TMath::Abs(cc1-cc2)>5.0?kFALSE:acceptEvent;
874 fThisCent = cent->GetCentralityPercentile( mycent );
875 acceptEvent = (fThisCent<fCentPerMin||fThisCent>
fCentPerMax)?kFALSE:acceptEvent;
876 acceptEvent = TMath::Abs(tTPCVtxZ-tSPDVtxZ)>0.5?kFALSE:acceptEvent;
877 acceptEvent = TMath::Abs(tTPCVtxZ)>
fVertexZcut?kFALSE:acceptEvent;
893 AliCentrality *cent = ((AliVAODHeader*)tAOD->GetHeader())->GetCentralityP();
894 fV0M = cent->GetCentralityPercentile(
"V0M");
895 fTRK = cent->GetCentralityPercentile(
"TRK");
900 fThisCent = cent->GetCentralityPercentile( mycent );
901 fPriVtxZ = tAOD->GetPrimaryVertex()->GetZ();
902 fSPDVtxZ = tAOD->GetPrimaryVertexSPD()->GetZ();
903 fSPDtracklets = tAOD->GetTracklets()->GetNumberOfTracklets();
904 fVZETotM = tAOD->GetVZEROData()->GetMTotV0A() + tAOD->GetVZEROData()->GetMTotV0C();
913 AliAODMCHeader *mcHeader =
dynamic_cast<AliAODMCHeader*
>(tAOD->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
915 fMCEP = mcHeader->GetReactionPlaneAngle();
942 if(!minimum)
return kFALSE;
947 acceptEvent = TMath::Abs(
fV0M-
fTRK)>5.0?kFALSE:acceptEvent;
992 Int_t rawN = tAOD->GetNumberOfTracks();
994 for(
Int_t id=0;
id!=rawN; ++id) {
995 track =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack(
id));
997 AliFatal(
"Not a standard AOD");
1063 printf(
"****************\n");
1064 printf(
"****************\n");
1065 printf(
"**::MyUserExec()\n");
1072 Bool_t acceptEvent=kFALSE;
1130 AliStack *
stack=NULL;
1132 AliMCEvent *mcevent=NULL;
1133 mcevent = MCEvent();
1134 if(mcevent) stack = mcevent->Stack();
1137 Int_t num = tESD->GetNumberOfTracks();
1138 AliESDtrack *myTrack;
1139 Int_t plist[3000], nlist[3000], np=0, nn=0;
1141 for (
Int_t i=0; i!=num; ++i) {
1142 myTrack = (AliESDtrack*) tESD->GetTrack(i);
1143 if(!myTrack)
continue;
1149 if( myTrack->Charge()>0 ) {
1158 const AliESDVertex *vtx = tESD->GetPrimaryVertex();
1159 AliESDtrack *pT, *nT;
1160 for(
int p=0; p!=np; ++p) {
1161 pT = (AliESDtrack*) tESD->GetTrack( plist[p] );
1162 for(
int n=0; n!=nn; ++n) {
1163 nT = (AliESDtrack*) tESD->GetTrack( nlist[n] );
1165 AliExternalTrackParam pETP(*pT), nETP(*nT);
1167 pETP.GetDCA(&nETP,tESD->GetMagneticField(),xa,xb);
1169 AliESDv0 vertex( nETP,nlist[n], pETP,plist[p] );
1175 Double_t pmx, pmy, pmz, nmx, nmy, nmz;
1176 vertex.GetNPxPyPz(nmx,nmy,nmz);
1177 vertex.GetPPxPyPz(pmx,pmy,pmz);
1178 TVector3 mom1(pmx,pmy,pmz), mom2(nmx,nmy,nmz), mom(vertex.Px(),vertex.Py(),vertex.Pz());
1179 Double_t qlpos = mom1.Dot(mom)/mom.Mag();
1180 Double_t qlneg = mom2.Dot(mom)/mom.Mag();
1185 Double_t eppi = TMath::Sqrt( mpi*mpi + pmx*pmx + pmy*pmy + pmz*pmz );
1186 Double_t enpi = TMath::Sqrt( mpi*mpi + nmx*nmx + nmy*nmy + nmz*nmz );
1187 fDecayMass = TMath::Sqrt( mpi*mpi + mpi*mpi + 2*(eppi*enpi - pmx*nmx - pmy*nmy - pmz*nmz ) );
1193 epr = TMath::Sqrt( mpr*mpr + pmx*pmx + pmy*pmy + pmz*pmz );
1194 epi = TMath::Sqrt( mpi*mpi + nmx*nmx + nmy*nmy + nmz*nmz );
1196 epi = TMath::Sqrt( mpi*mpi + pmx*pmx + pmy*pmy + pmz*pmz );
1197 epr = TMath::Sqrt( mpr*mpr + nmx*nmx + nmy*nmy + nmz*nmz );
1199 fDecayMass = TMath::Sqrt( mpi*mpi + mpr*mpr + 2*(epi*epr - pmx*nmx - pmy*nmy - pmz*nmz ) );
1208 if( dDPHI < 0 ) dDPHI += TMath::TwoPi();
1209 if( dDPHI > TMath::Pi() ) dDPHI = TMath::TwoPi()-dDPHI;
1211 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SAllOP");
1222 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SSelOP");
1237 bool matched =
false;
1238 Int_t labelpos = pT->GetLabel();
1239 Int_t labelneg = nT->GetLabel();
1241 if( labelpos>0 && labelneg>0 ) {
1242 TParticle *mcpos = stack->Particle( labelpos );
1243 TParticle *mcneg = stack->Particle( labelneg );
1244 Int_t pdgRecPos = mcpos->GetPdgCode();
1245 Int_t pdgRecNeg = mcneg->GetPdgCode();
1246 if( pdgRecPos==211&&pdgRecNeg==-211 )
if(mcpos->GetMother(0)>0) {
1247 if( mcpos->GetMother(0)==mcneg->GetMother(0) ) {
1248 TParticle *mcmot = stack->Particle( mcpos->GetMother(0) );
1249 rOri = TMath::Sqrt( mcmot->Vx()*mcmot->Vx() + mcmot->Vy()*mcmot->Vy() );
1250 if( TMath::Abs(mcmot->GetPdgCode())==310) {
1251 if(mcmot->GetNDaughters()==2) matched=
true;
1271 if(!mcArray)
return;
1272 AliAODMCParticle *myMCTrack;
1273 for(
int i=0; i!=mcArray->GetEntriesFast(); ++i) {
1274 myMCTrack =
dynamic_cast<AliAODMCParticle*
>(mcArray->At( i ));
1275 if(!myMCTrack)
continue;
1325 if(myMCTrack->Eta()<-0.8)
continue;
1326 if(myMCTrack->Eta()>+0.8)
continue;
1327 if(myMCTrack->Y()<-0.5)
continue;
1328 if(myMCTrack->Y()>+0.5)
continue;
1330 switch( TMath::Abs(myMCTrack->PdgCode()) ) {
1333 if( myMCTrack->IsPrimary() )
1338 if( myMCTrack->IsPrimary() )
1343 if( myMCTrack->IsPrimary() )
1348 if( myMCTrack->IsPrimary() )
1353 if( myMCTrack->IsPrimary() )
1357 if( myMCTrack->IsPrimary() )
1361 if( myMCTrack->IsPrimary() )
1365 if( myMCTrack->IsPrimary() )
1373 TVector3 mom( me->Px(), me->Py(), 0 );
1374 TVector3 fli( me->Xv()-vtx->GetX(), me->Yv()-vtx->GetY(), 0 );
1375 Double_t ctp = mom.Dot(fli) / mom.Mag() / fli.Mag();
1380 TVector3 mom( me->Px(), me->Py(), 0 );
1381 TVector3 fli( me->Xv()-vtx->GetX(), me->Yv()-vtx->GetY(), 0 );
1382 Double_t ctp = mom.Dot(fli) / mom.Mag() / fli.Mag();
1387 Double_t dx = me->Xv()-vtx->GetX();
1388 Double_t dy = me->Yv()-vtx->GetY();
1389 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy );
1394 Double_t dx = me->Xv()-vtx->GetX();
1395 Double_t dy = me->Yv()-vtx->GetY();
1396 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy );
1401 Double_t dx = me->Xv()-vtx->GetX();
1402 Double_t dy = me->Yv()-vtx->GetY();
1403 Double_t dz = me->Zv()-vtx->GetZ();
1404 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy + dz*dz );
1409 Double_t dx = me->Xv()-vtx->GetX();
1410 Double_t dy = me->Yv()-vtx->GetY();
1411 Double_t dz = me->Zv()-vtx->GetZ();
1412 Double_t dxy = TMath::Sqrt( dx*dx + dy*dy + dz*dz );
1417 TClonesArray* mcArray=NULL;
1419 mcArray =
dynamic_cast<TClonesArray*
>(tAOD->FindListObject(AliAODMCParticle::StdBranchName()));
1423 Int_t nV0s = tAOD->GetNumberOfV0s();
1425 Int_t v0all=0, v0imw=0;
1426 for (
Int_t i=0; i!=nV0s; ++i) {
1427 myV0 = (AliAODv0*) tAOD->GetV0(i);
1429 if(!
fOnline)
if(myV0->GetOnFlyStatus() )
continue;
1430 if(
fOnline)
if(!myV0->GetOnFlyStatus() )
continue;
1436 AliAODTrack *iT, *jT;
1437 AliAODVertex *vtx = tAOD->GetPrimaryVertex();
1440 vtx->GetCovarianceMatrix(cov);
1441 const AliESDVertex vESD(pos,cov,100.,100);
1444 iT=(AliAODTrack*) myV0->GetDaughter(0);
1445 if(iT->Charge()>0) {
1452 iT=(AliAODTrack*) myV0->GetDaughter(iPos);
1453 AliESDtrack ieT( iT );
1454 ieT.SetTPCClusterMap( iT->GetTPCClusterMap() );
1455 ieT.SetTPCSharedMap( iT->GetTPCSharedMap() );
1456 ieT.SetTPCPointsF( iT->GetTPCNclsF() );
1457 ieT.PropagateToDCA(&vESD, tAOD->GetMagneticField(), 100);
1460 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1467 jT=(AliAODTrack*) myV0->GetDaughter(iNeg);
1468 AliESDtrack jeT( jT );
1469 jeT.SetTPCClusterMap( jT->GetTPCClusterMap() );
1470 jeT.SetTPCSharedMap( jT->GetTPCSharedMap() );
1471 jeT.SetTPCPointsF( jT->GetTPCNclsF() );
1472 jeT.PropagateToDCA(&vESD, tAOD->GetMagneticField(), 100);
1474 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1482 if(
IsAtTPCEdge(iT->Phi(),iT->Pt(),+1,tAOD->GetMagneticField()) )
continue;
1483 if(
IsAtTPCEdge(jT->Phi(),jT->Pt(),-1,tAOD->GetMagneticField()) )
continue;
1525 if( dDPHI < 0 ) dDPHI += TMath::TwoPi();
1526 if( dDPHI > TMath::Pi() ) dDPHI = TMath::TwoPi()-dDPHI;
1528 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SAllOP");
1552 if( (dDPHI>TMath::PiOver4()) && (dDPHI<3*TMath::PiOver4()) )
FillCandidateSpy(
"V0SSelOP");
1567 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1572 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1580 bool matched =
false;
1581 bool feeddown =
false;
1582 Int_t labelpos = iT->GetLabel();
1583 Int_t labelneg = jT->GetLabel();
1584 AliAODMCParticle *mcpos = (AliAODMCParticle*) mcArray->At( TMath::Abs(labelpos) );
1585 AliAODMCParticle *mcneg = (AliAODMCParticle*) mcArray->At( TMath::Abs(labelneg) );
1586 if( mcpos && mcneg ) {
1588 Int_t pdgRecPos = mcpos->GetPdgCode();
1589 Int_t pdgRecNeg = mcneg->GetPdgCode();
1590 int pospdg=211, negpdg=211;
1591 int mompdg=310, fdwpdg=333;
1596 pospdg=2212; negpdg=211;
1598 negpdg=2212; pospdg=211;
1601 if( TMath::Abs(pdgRecPos)==pospdg&&TMath::Abs(pdgRecNeg)==negpdg )
1602 if(mcpos->GetMother()>-1)
1603 if( mcpos->GetMother()==mcneg->GetMother() ) {
1604 AliAODMCParticle *mcmot = (AliAODMCParticle*) mcArray->At( mcpos->GetMother() );
1605 fDecayMatchOrigin = TMath::Sqrt( mcmot->Xv()*mcmot->Xv() + mcmot->Yv()*mcmot->Yv() );
1609 if( TMath::Abs(mcmot->GetPdgCode())==mompdg) {
1610 if(mcmot->GetNDaughters()==2) {
1613 Double_t dx = mcmot->Xv() - mcpos->Xv();
1614 Double_t dy = mcmot->Yv() - mcpos->Yv();
1617 if(mcmot->GetMother()>-1) {
1619 AliAODMCParticle *mcfdw = (AliAODMCParticle*) mcArray->At( mcmot->GetMother() );
1620 if( TMath::Abs(mcfdw->GetPdgCode())==fdwpdg)
1635 if(labelpos<0&&labelneg<0) {
1639 }
else if(labelpos>0&&labelneg>0) {
1642 }
else if(labelpos*labelneg<0) {
1647 AliAODVertex *secvtx = myV0->GetSecondaryVtx();
1649 secvtx->GetXYZ(possec);
1650 secvtx->GetCovarianceMatrix(covsec);
1651 const AliESDVertex vSecVtx(possec,covsec,100.,100);
1652 AliESDtrack trackAtSecI( iT );
1653 trackAtSecI.SetTPCClusterMap( iT->GetTPCClusterMap() );
1654 trackAtSecI.SetTPCSharedMap( iT->GetTPCSharedMap() );
1655 trackAtSecI.SetTPCPointsF( iT->GetTPCNclsF() );
1656 trackAtSecI.PropagateToDCA(&vSecVtx, tAOD->GetMagneticField(), 100);
1664 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1668 if(labelpos<0||labelneg<0)
FillTrackSpy(
"MthNegDau",
true);
1670 AliESDtrack trackAtSecJ( jT );
1671 trackAtSecJ.SetTPCClusterMap( jT->GetTPCClusterMap() );
1672 trackAtSecJ.SetTPCSharedMap( jT->GetTPCSharedMap() );
1673 trackAtSecJ.SetTPCPointsF( jT->GetTPCNclsF() );
1674 trackAtSecJ.PropagateToDCA(&vSecVtx, tAOD->GetMagneticField(), 100);
1679 fDaughterMatchPhi=mcneg->Phi();
1682 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1686 if(labelpos<0||labelneg<0)
FillTrackSpy(
"MthNegDau",
true);
1698 ieT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1703 jeT.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1741 TClonesArray* mcArray=NULL;
1743 mcArray =
dynamic_cast<TClonesArray*
>(tAOD->FindListObject(AliAODMCParticle::StdBranchName()));
1746 for(
int i=0; i!=tAOD->GetNumberOfTracks(); ++i) {
1747 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack( i ));
1749 if( !t->TestFilterBit(1) )
continue;
1765 if( TMath::Abs(
fDecayMass) > 3.0 ) pass=kFALSE;
1766 if( t->Eta()<-0.5 || t->Eta()>+0.5 ) pass=kFALSE;
1767 if( t->Pt()<0.2 || t->Pt()>20.0 ) pass=kFALSE;
1768 AliESDtrack et( t );
1769 et.SetTPCClusterMap( t->GetTPCClusterMap() );
1770 et.SetTPCSharedMap( t->GetTPCSharedMap() );
1771 et.SetTPCPointsF( t->GetTPCNclsF() );
1774 AliAODVertex *vtx = tAOD->GetPrimaryVertex();
1777 et.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
1783 FillTrackVn(
"TrkAllVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1787 FillTrackVn(
"TrkSelVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1792 bool matched =
false;
1793 Int_t label = t->GetLabel();
1794 AliAODMCParticle *mcpar = (AliAODMCParticle*) mcArray->At( TMath::Abs(label) );
1797 Int_t pdgmcpar = TMath::Abs(mcpar->GetPdgCode());
1800 if(pdgmcpar==211) matched =
true;
1803 if(pdgmcpar==211) matched =
true;
1806 if(pdgmcpar==2212) matched =
true;
1809 if(!mcpar->IsPrimary()) matched =
false;
1814 FillTrackVn(
"MthVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1818 FillTrackVn(
"MthNegVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1822 FillTrackVn(
"MthPosVn",t->Pt(),t->Phi(),t->Eta(),t->GetID());
1853 if(!TMath::AreEqualAbs(MeanQaQt,0,1e-10)&&!TMath::AreEqualAbs(MeanQcQt,0,1e-10)&&!TMath::AreEqualAbs(MeanQaQc,0,1e-10)) {
1854 Double_t OneOverChiSquaredVZEA = MeanQaQa*MeanQcQt/MeanQaQc/MeanQaQt-1;
1855 Double_t OneOverChiSquaredVZEC = MeanQcQc*MeanQaQt/MeanQaQc/MeanQcQt-1;
1856 if(!TMath::AreEqualAbs(OneOverChiSquaredVZEA,0,1e-10)&&!TMath::AreEqualAbs(OneOverChiSquaredVZEC,0,1e-10)) {
1857 ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEA"))->SetBinContent( 1, 1/OneOverChiSquaredVZEA );
1858 ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEC"))->SetBinContent( 1, 1/OneOverChiSquaredVZEC );
1895 Bool_t overwrite = kTRUE;
1930 for(
int iCand=0; iCand!=
fCandidates->GetEntriesFast(); ++iCand ) {
1947 if(
fDebug) printf(
" was in RP set");
1966 if(
fDebug) printf(
" >charged track (%d) was also found in RP set (adding poi tag)\n",cand->
GetID());
2001 TF1 cutLo(
"cutLo",
"-0.01/x+pi/18.0-0.015", 0, 100);
2002 TF1 cutHi(
"cutHi",
"0.55/x/x+pi/18.0+0.03", 0, 100);
2004 if(b<0) phimod = TMath::TwoPi()-phimod;
2005 if(charge<0) phimod = TMath::TwoPi()-phimod;
2006 phimod += TMath::Pi()/18.0;
2007 phimod = fmod(phimod, TMath::Pi()/9.0);
2008 if( phimod<cutHi.Eval(pt) && phimod>cutLo.Eval(pt) )
2027 printf(
"**::MakeQVectors()");
2038 Double_t qvzecos,qvzesin,psivzea,psivzec,psivze,qvze, qvzea, qvzec;
2046 psivze = ( TMath::Pi()+TMath::ATan2(-qvzesin,-qvzecos) )/
fHarmonic;
2048 Double_t qtpccos,qtpcsin,psitpca,psitpcc,psitpc,qtpc;
2054 psitpc = ( TMath::Pi()+TMath::ATan2(-qtpcsin,-qtpccos) )/
fHarmonic;
2062 if(
fQTPCA<2||fQTPCC<2)
return;
2069 Double_t vzec_qmnor = TMath::Sqrt( vzec_qmcos*vzec_qmcos + vzec_qmsin*vzec_qmsin );
2072 Double_t vzea_qmnor = TMath::Sqrt( vzea_qmcos*vzea_qmcos + vzea_qmsin*vzea_qmsin );
2075 Double_t vze_qmnor = TMath::Sqrt( vze_qmcos*vze_qmcos + vze_qmsin*vze_qmsin );
2078 Double_t tpcc_qmnor = TMath::Sqrt( tpcc_qmcos*tpcc_qmcos + tpcc_qmsin*tpcc_qmsin );
2081 Double_t tpca_qmnor = TMath::Sqrt( tpca_qmcos*tpca_qmcos + tpca_qmsin*tpca_qmsin );
2084 Double_t tpc_qmnor = TMath::Sqrt( tpc_qmcos*tpc_qmcos + tpc_qmsin*tpc_qmsin );
2112 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 1., tpcc_qmsin, tpcc_qmnor );
2113 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 2., tpcc_qmcos, tpcc_qmnor );
2114 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 3., tpca_qmsin, tpca_qmnor );
2115 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 4., tpca_qmcos, tpca_qmnor );
2116 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 5., tpc_qmsin, tpc_qmnor );
2117 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"TPCQm"))->Fill( 6., tpc_qmcos, tpc_qmnor );
2119 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 1., vzec_qmsin, vzec_qmnor );
2120 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 2., vzec_qmcos, vzec_qmnor );
2121 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 3., vzea_qmsin, vzea_qmnor );
2122 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 4., vzea_qmcos, vzea_qmnor );
2123 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 5., vze_qmsin, vze_qmnor );
2124 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"VZEQm"))->Fill( 6., vze_qmcos, vze_qmnor );
2126 Double_t vzeqaqc = vzec_qmcos*vzea_qmcos + vzec_qmsin*vzea_qmsin;
2127 Double_t vzeqatpcq = vzea_qmcos*tpc_qmcos + vzea_qmsin*tpc_qmsin;
2128 Double_t vzeqctpcq = vzec_qmcos*tpc_qmcos + vzec_qmsin*tpc_qmsin;
2129 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmVZEAQmVZEC"))->Fill( 1., vzeqaqc, vze_qmnor );
2130 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmVZEASQUARED"))->Fill( 1., vzea_qmnor*vzea_qmnor, vze_qmnor );
2131 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmVZECSQUARED"))->Fill( 1., vzec_qmnor*vzec_qmnor, vze_qmnor );
2132 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmTPCQmVZEA"))->Fill( 1., vzeqatpcq, vze_qmnor );
2133 ((TProfile*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"QmTPCQmVZEC"))->Fill( 1., vzeqctpcq, vze_qmnor );
2146 eta = -3.45+0.5*(
id/8);
2147 phi = TMath::PiOver4()*(0.5+
id%8);
2148 w = tevent->GetVZEROEqMultiplicity(
id);
2160 eta = +4.8-0.6*((
id/8)-4);
2161 phi = TMath::PiOver4()*(0.5+
id%8);
2162 w = tevent->GetVZEROEqMultiplicity(
id);
2180 tH1D =
new TH1D(
"PT",
"PT", 50,0,5); me->Add(tH1D);
2181 tH1D =
new TH1D(
"PHI",
"PHI", 90,0,TMath::TwoPi()); me->Add(tH1D);
2182 tH1D =
new TH1D(
"ETA",
"ETA", 40,-1,+1); me->Add(tH1D);
2183 tH1D =
new TH1D(
"TPCS",
"TPC Signal", 100,0,500); me->Add(tH1D);
2184 tH1D =
new TH1D(
"IPXY",
"IPXY", 100,-2,+2); me->Add(tH1D);
2185 tH1D =
new TH1D(
"IPZ",
"IPZ", 100,-2,+2); me->Add(tH1D);
2187 tH1D =
new TH1D(
"TPCNCLS",
"NCLS", 170,-0.5,+169.5); me->Add(tH1D);
2188 tH1D =
new TH1D(
"TPCSHCL",
"NSCLS / NCLS", 100,0,1); me->Add(tH1D);
2189 tH1D =
new TH1D(
"TPCFICL",
"NCLS1I / NCLS",100,0,1); me->Add(tH1D);
2190 tH1D =
new TH1D(
"TPCXRNF",
"XROW / NFCLS", 100,0,1.5); me->Add(tH1D);
2191 tH1D =
new TH1D(
"TPCRCHI",
"CHI2 / NCLS", 50,0,5); me->Add(tH1D);
2193 tH1D =
new TH1D(
"ITSNCLS",
"NCLS", 7,-0.5,+6.5); me->Add(tH1D);
2194 tH1D =
new TH1D(
"ITSRCHI",
"CHI2 / NCLS", 50,0,5); me->Add(tH1D);
2199 if(track->GetKinkIndex(0)>0)
return kFALSE;
2200 if( (track->GetStatus()&AliESDtrack::kTPCrefit)==0 )
return kFALSE;
2204 Double_t tpcs = track->GetTPCsignal();
2206 track->GetImpactParameters(ipxy,ipz);
2207 Int_t cls = track->GetTPCclusters(0);
2209 findcls = track->GetTPCNclsF();
2210 xrows = track->GetTPCCrossedRows();
2211 chi2 = track->GetTPCchi2();
2221 cls1i = track->GetTPCNclsIter1();
2222 scls = track->GetTPCnclsS();
2223 itscls = track->GetITSclusters(0);
2224 itschi2 = track->GetITSchi2();
2227 Double_t itsrchi2 = itscls/itschi2;
2285 AliAODVertex *vtx = tAOD->GetPrimaryVertex();
2288 vtx->GetCovarianceMatrix(cov);
2289 const AliESDVertex vESD(pos,cov,100.,100);
2292 Int_t rawN = tAOD->GetNumberOfTracks();
2293 for(
Int_t id=0;
id!=rawN; ++id) {
2294 track =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack(
id));
2296 AliFatal(
"Not a standard AOD");
2302 if(
IsAtTPCEdge( track->Phi(), track->Pt(), track->Charge(), tAOD->GetMagneticField() ) )
continue;
2303 AliESDtrack etrack( track );
2304 etrack.SetTPCClusterMap( track->GetTPCClusterMap() );
2305 etrack.SetTPCSharedMap( track->GetTPCSharedMap() );
2306 etrack.SetTPCPointsF( track->GetTPCNclsF() );
2308 etrack.GetDZ(pos[0], pos[1], pos[2], tAOD->GetMagneticField(), ip);
2348 Int_t rawN = tESD->GetNumberOfTracks();
2349 for(
Int_t id=0;
id!=rawN; ++id) {
2350 track = tESD->GetTrack(
id);
2353 if(
IsAtTPCEdge( track->Phi(), track->Pt(), track->Charge(), tESD->GetMagneticField() ) )
continue;
2386 tH1D =
new TH1D(
"Phi",
"Phi", 100,0,TMath::TwoPi()); me->Add(tH1D);
2387 tH1D =
new TH1D(
"Eta",
"Eta", 100,-1,+1); me->Add(tH1D);
2388 tH1D =
new TH1D(
"Y",
"Y", 100,-1,+1); me->Add(tH1D);
2389 tH1D =
new TH1D(
"Rad2",
"Rad2", 1000,0,+100); me->Add(tH1D);
2396 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Pt" ))->Fill( p->Pt() );
2397 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Eta" ))->Fill( p->Eta() );
2398 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Y" ))->Fill( p->Y() );
2399 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Phi" ))->Fill( p->Phi() );
2400 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Rad2" ))->Fill( TMath::Sqrt( p->Xv()*p->Xv() +
2401 p->Yv()*p->Yv() ) );
2402 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Dphi" ))->Fill( p->Pt(),
GetMCDPHI(p->Phi()) );
2403 ((TProfile*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Cos2dphi" ))->Fill( p->Pt(), TMath::Cos( 2*
GetMCDPHI(p->Phi()) ), 1 );
2415 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Pt" ))->Fill( p->Pt() );
2416 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Eta" ))->Fill( p->Eta() );
2417 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Phi" ))->Fill( p->Phi() );
2418 ((
TH1D*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"Rad2" ))->Fill( TMath::Sqrt( p->Vx()*p->Vx() +
2419 p->Vy()*p->Vy() ) );
2428 tH2D =
new TH2D(
"PhiEta",
"PhiEta;Phi;Eta", 100,0,TMath::TwoPi(),100,-1,+1); me->Add(tH2D);
2437 tH2D =
new TH2D(
"APPOS",
"APPOS;alphaPOS;QtPOS",100,-2,+2,100,0,0.3); me->Add(tH2D);
2438 tH2D =
new TH2D(
"D0PD0N",
"D0PD0N;D0P;D0N", 200,-10,+10,200,-10,+10); me->Add(tH2D);
2439 tH2D =
new TH2D(
"XPOSXNEG",
"XPOSXNEG;XPOS;XNEG", 200,-50,+50,200,-50,+50); me->Add(tH2D);
2442 tH1D =
new TH1D(
"MCOrigin",
"MCOrigin;Rad2", 1000,0,50); me->Add(tH1D);
2443 tH2D =
new TH2D(
"PHIRes",
"PHIRes;PHI;MC-DAT", 72,0,TMath::TwoPi(),100,-0.12,+0.12); me->Add(tH2D);
2444 tH2D =
new TH2D(
"ETARes",
"ETARes;ETA;MC-DAT", 16,-0.8,+0.8,100,-0.2,+0.2); me->Add(tH2D);
2446 tH2D =
new TH2D(
"RXYRes",
"RXYRes;RXY;MC-DAT", 100,0,50,100,-4.0,+4.0); me->Add(tH2D);
2448 tH2D =
new TH2D(
"PTDPHIMC",
"PtDPHIMC;Pt;PHI-MCEP",
fPtBins,
fPtBinEdge,72,0,TMath::Pi()); me->Add(tH2D);
2449 tPro =
new TProfile(
"Cos2dphiMC",
"Cos2dphiMC",
fPtBins,
fPtBinEdge); me->Add(tPro);
2508 tH2D =
new TH2D(
"PHIETA",
"PHIETA;PHI;ETA", 100,0,TMath::TwoPi(),100,-2,2); me->Add(tH2D);
2510 tH2D =
new TH2D(
"IPXYIPZ",
"IPXYIPZ;IPXY;IPZ", 100,-10,+10,100,-10,+10); me->Add(tH2D);
2515 tH2D->GetYaxis()->SetBinLabel(1,
"ITS refit");
2516 tH2D->GetYaxis()->SetBinLabel(2,
"TPC refit");
2517 tH2D =
new TH2D(
"POSTPCNCLCHI2",
"POSTPCNCLCHI2;NCLS;CHI2/NCLS", 170,0,170,100,0,8); me->Add(tH2D);
2518 tH2D =
new TH2D(
"POSTPCNFCLNXR",
"POSTPCNFCLNXR;NFCLS;NXR", 170,0,170,170,0,170); me->Add(tH2D);
2519 tH2D =
new TH2D(
"POSTPCNCLNFCL",
"POSTPCNCLNFCL;NCLS;NFCLS", 170,0,170,170,0,170); me->Add(tH2D);
2520 tH2D =
new TH2D(
"POSTPCNCLNSCL",
"POSTPCNCLNSCL;NCLS;NSCLS", 170,0,170,170,0,170); me->Add(tH2D);
2521 tH2D =
new TH2D(
"NEGTPCNCLCHI2",
"NEGTPCNCLCHI2;NCLS;CHI2/NCLS", 170,0,170,100,0,8); me->Add(tH2D);
2522 tH2D =
new TH2D(
"NEGTPCNFCLNXR",
"NEGTPCNFCLNXR;NFCLS;NXR", 170,0,170,170,0,170); me->Add(tH2D);
2523 tH2D =
new TH2D(
"NEGTPCNCLNFCL",
"NEGTPCNCLNFCL;NCLS;NFCLS", 170,0,170,170,0,170); me->Add(tH2D);
2524 tH2D =
new TH2D(
"NEGTPCNCLNSCL",
"NEGTPCNCLNSCL;NCLS;NSCLS", 170,0,170,170,0,170); me->Add(tH2D);
2527 tPro =
new TProfile(
"COSNDPHIMC",
"COSNDPHIMC",
fPtBins,
fPtBinEdge); me->Add(tPro);
2530 tH2D =
new TH2D(
"PHIRes",
"PHIRes;PHI;MC-DAT", 72,0,TMath::TwoPi(),100,-0.12,+0.12); me->Add(tH2D);
2531 tH2D =
new TH2D(
"ETARes",
"ETARes;ETA;MC-DAT", 16,-0.8,+0.8,100,-0.2,+0.2); me->Add(tH2D);
2558 ((TProfile*)((
TList*)
fList->FindObject(listName.Data()))->FindObject(
"COSNDPHIMC" ))->Fill(
fDaughterPt, cosn, 1 );
2586 for(
Int_t lay=0; lay!=6; ++lay)
2591 for(
int i =0;i<6;i++){
2613 for(
Int_t lay=0; lay!=6; ++lay)
2638 printf(
"One of vertices is not valid\n");
2641 static TMatrixDSym vVb(3);
2643 double dx = v0->GetX()-v1->GetX();
2644 double dy = v0->GetY()-v1->GetY();
2645 double dz = v0->GetZ()-v1->GetZ();
2646 double cov0[6],cov1[6];
2647 v0->GetCovarianceMatrix(cov0);
2648 v1->GetCovarianceMatrix(cov1);
2649 vVb(0,0) = cov0[0]+cov1[0];
2650 vVb(1,1) = cov0[2]+cov1[2];
2651 vVb(2,2) = cov0[5]+cov1[5];
2652 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
2653 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
2655 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
2656 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
2657 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
2658 return dist>0 ? TMath::Sqrt(dist) : -1;
2666 const int kMinPlpContrib = 5;
2667 const double kMaxPlpChi2 = 5.0;
2668 const double kMinWDist = 15;
2671 printf(
"Event is neither of AOD nor ESD\n");
2675 const AliVVertex* vtPrm = 0;
2676 const AliVVertex* vtPlp = 0;
2680 if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) )
return kFALSE;
2681 vtPrm = aod->GetPrimaryVertex();
2682 if (vtPrm == aod->GetPrimaryVertexSPD())
return kTRUE;
2685 if ( !(nPlp=esd->GetNumberOfPileupVerticesTracks()))
return kFALSE;
2686 vtPrm = esd->GetPrimaryVertexTracks();
2687 if (((AliESDVertex*)vtPrm)->GetStatus()!=1)
return kTRUE;
2691 for (
int ipl=0;ipl<nPlp;ipl++) {
2692 vtPlp = aod ? (
const AliVVertex*)aod->GetPileupVertexTracks(ipl) : (
const AliVVertex*)esd->GetPileupVertexTracks(ipl);
2694 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
2695 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
2699 double wDst =
GetWDist(vtPrm,vtPlp);
2700 if (wDst<kMinWDist)
continue;
2711 fFB1 = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
2713 fFB1024 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
2714 fFB1024->SetMinNCrossedRowsTPC(120);
2715 fFB1024->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
2716 fFB1024->SetMaxChi2PerClusterITS(36);
2717 fFB1024->SetMaxFractionSharedTPCClusters(0.4);
2718 fFB1024->SetMaxChi2TPCConstrainedGlobal(36);
2719 fFB1024->SetEtaRange(-0.9,0.9);
2720 fFB1024->SetPtRange(0.15, 1e10);
2727 ret =
fFB1024->AcceptTrack(track);
2730 ret =
fFB1->AcceptTrack(track);
2746 for(
int i=0;i!=64;++i)
fVZEextW[i]=1;
2759 for(
int i=0;i!=64;++i)
fVZEextW[i] =
fVZEResponse->Integral(i+1,i+1,ybinmin,ybinmax)/(maxC-minC);
2762 for(
int j=0; j!=8; ++j) {
2764 for(
int i=0;i!=8;++i) ring[j] +=
fVZEextW[j*8+i]/8;
2768 int xbinmin, xbinmax;
2771 disk[0] =
fVZEResponse->Integral(xbinmin,xbinmax,ybinmin,ybinmax)/(maxC-minC)/(xbinmax-xbinmin+1);
2774 disk[1] =
fVZEResponse->Integral(xbinmin,xbinmax,ybinmin,ybinmax)/(maxC-minC)/(xbinmax-xbinmin+1);
2784 printf(
"VZE calibration: requested but not found!!!\n");
2792 tList->SetName(
"VZEQA" );
2794 fList->Add( tList );
2795 tH2D =
new TH2D(
"EQU",
"EQU;VZEeqmult-VZEmult;cell",100,-5,+5,64,0,64); tList->Add( tH2D );
2796 prof =
new TProfile2D(
"LINbefCAL",
"LINbef;VZEcell;VZEeqmult;SPDtrkl", 64,0,64,350,0,700,0,10000); tList->Add( prof );
2797 prof =
new TProfile2D(
"LINaftCAL",
"LINaft;VZEcell;VZEeqmult;SPDtrkl", 64,0,64,350,0,700,0,10000); tList->Add( prof );
2813 AliVVZERO *vzero = tAOD->GetVZEROData();
2814 AliAODTracklets *tracklets = tAOD->GetTracklets();
2816 if(!tracklets)
return;
2818 Int_t trkl = tracklets->GetNumberOfTracklets();
2819 for(
int id=0;
id!=64; ++id) {
2820 mult = vzero->GetMultiplicity(
id);
2821 eqmult = tAOD->GetVZEROEqMultiplicity(
id);
2823 ((TProfile2D*) ((
TList*)
fList->FindObject(
"VZEQA"))->
FindObject(
"LINbefCAL" ))->Fill(
id,eqmult,trkl,1);
2830 AliVEvent *
event = InputEvent();
2832 Int_t thisrun =
event->GetRunNumber();
2833 fVZEResponse =
new TH2D( Form(
"%d",thisrun), Form(
"%d;cell;CC",thisrun), 64,0,64, 110, -10, 100);
2839 AliVEvent *
event = InputEvent();
2845 for(
int id=0;
id!=64; ++id) {
2846 w =
event->GetVZEROEqMultiplicity(
id);
2847 if(w<3) rejectEvent = kTRUE;
2849 if(rejectEvent)
return;
2851 for(
int id=0;
id!=64; ++id) {
2852 w =
event->GetVZEROEqMultiplicity(
id);
2859 for(
int i=0; i!=tAOD->GetNumberOfTracks(); ++i) {
2860 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(tAOD->GetTrack( i ));
2862 if( !t->TestFilterBit(fb) )
continue;
2863 if( t->Eta()<-0.8 || t->Eta()>+0.8 )
continue;
2864 if( t->Pt()<0.2 || t->Pt()>5.0 )
continue;
2865 if( t->GetTPCNcls()<70 )
continue;
2867 if( t->Chi2perNDF()<0.2 )
continue;
2877 for(
int i=0; i!=ev->GetNumberOfTracks(); ++i) {
2878 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(ev->GetTrack( i ));
2880 if( !t->TestFilterBit(1) )
continue;
2881 if( t->Eta()<-0.8 || t->Eta()>+0.8 )
continue;
2882 if( t->Pt()<0.2 || t->Pt()>5.0 )
continue;
2883 if( t->GetTPCNcls()<70 )
continue;
2884 if( t->GetTPCsignal()<10.0 )
continue;
2885 if( t->Chi2perNDF()<0.2 )
continue;
2895 for(
int i=0; i!=ev->GetNumberOfTracks(); ++i) {
2896 AliAODTrack *t =
dynamic_cast<AliAODTrack*
>(ev->GetTrack( i ));
2898 if( !t->TestFilterBit(16) )
continue;
2899 if( t->Eta()<-0.8 || t->Eta()>+0.8 )
continue;
2900 if( t->Pt()<0.2 || t->Pt()>5.0 )
continue;
2901 if( t->GetTPCNcls()<70 )
continue;
2902 if( t->GetTPCsignal()<10.0 )
continue;
2903 if( t->Chi2perNDF()<0.1 )
continue;
2905 if( !t->PropagateToDCA(ev->GetPrimaryVertex(),ev->GetMagneticField(),100,b,bcov) )
continue;
2906 if( b[0]>+0.3 || b[0]<-0.3 || b[1]>+0.3 || b[1]<-0.3)
continue;
2923 tProfile =
new TProfile(
"SP_uVZEA",
"u x Q_{VZEA}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2924 tProfile =
new TProfile(
"SP_uVZEC",
"u x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2925 tProfile =
new TProfile(
"SP_VZEAVZEC",
"Q_{VZEA} x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2926 tProfile =
new TProfile(
"SP_VZEATPC",
"Q_{VZEA} x Q_{TPC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2927 tProfile =
new TProfile(
"SP_VZECTPC",
"Q_{VZEC} x Q_{TPC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2929 tProfile =
new TProfile(
"SP_uVZEAuVZEC",
"u x Q_{VZEA} . u x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2930 tProfile =
new TProfile(
"SP_uVZEAVZEAVZEC",
"u x Q_{VZEA} . Q_{VZEA} x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2931 tProfile =
new TProfile(
"SP_uVZECVZEAVZEC",
"u x Q_{VZEC} . Q_{VZEA} x Q_{VZEC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2933 tProfile =
new TProfile(
"SP_uTPCA",
"u x Q_{TPCA}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2934 tProfile =
new TProfile(
"SP_uTPCC",
"u x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2935 tProfile =
new TProfile(
"SP_TPCATPCC",
"Q_{TPCA} x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2937 tProfile =
new TProfile(
"SP_uTPCATPCATPCC",
"u x Q_{TPCA} . Q_{TPCA} x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2938 tProfile =
new TProfile(
"SP_uTPCCTPCATPCC",
"u x Q_{TPCC} . Q_{TPCA} x Q_{TPCC}",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2943 tProfile =
new TProfile(
"QC_C2",
"QC_C2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2944 tProfile =
new TProfile(
"QC_C4",
"QC_C4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2945 tProfile =
new TProfile(
"QC_DC2",
"QC_DC2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2946 tProfile =
new TProfile(
"QC_DC4",
"QC_DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2947 tProfile =
new TProfile(
"QC_C2C4",
"QC_C2C4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2948 tProfile =
new TProfile(
"QC_C2DC2",
"QC_C2DC2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2949 tProfile =
new TProfile(
"QC_C2DC4",
"QC_C2DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2950 tProfile =
new TProfile(
"QC_C4DC2",
"QC_C4DC2",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2951 tProfile =
new TProfile(
"QC_C4DC4",
"QC_C4DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2952 tProfile =
new TProfile(
"QC_DC2DC4",
"QC_DC2DC4",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2954 tProfile =
new TProfile(
"QC_pCos",
"QC_pCos",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2955 tProfile =
new TProfile(
"QC_pSin",
"QC_pSin",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2956 tProfile =
new TProfile(
"QC_qCos",
"QC_qCos",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2957 tProfile =
new TProfile(
"QC_qSin",
"QC_qSin",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2958 tProfile =
new TProfile(
"QC_q2hCos",
"QC_q2hCos",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2959 tProfile =
new TProfile(
"QC_q2hSin",
"QC_q2hSin",
fPtBins,
fPtBinEdge,-3,+3,
"s"); tList->Add( tProfile ); tProfile->Sumw2();
2976 tProfile =
new TProfile(
"MC_COSNDPHI",
"MC_COSNDPHI",
fPtBins,
fPtBinEdge,-3,+3); tList->Add( tProfile );
2977 tH2D =
new TH2D(
"MC_COSNDPHI_uQVZEA",
"MC_COSNDPHI_uQVZEA",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2978 tH2D =
new TH2D(
"MC_COSNDPHI_uQVZEC",
"MC_COSNDPHI_uQVZEC",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2979 tH2D =
new TH2D(
"MC_COSNDPHI_uQTPCA",
"MC_COSNDPHI_uQTPCA",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2980 tH2D =
new TH2D(
"MC_COSNDPHI_uQTPCC",
"MC_COSNDPHI_uQTPCC",100,-1,+1,100,-0.3,+0.3); tList->Add( tH2D );
2985 TProfile2D *tProfile;
3050 out->SetName(
fList->GetName() );
3057 ori = (
TList*)
fList->FindObject(
"MakeQSpy");
3060 ori = (
TList*)
fList->FindObject(
"V0SAllVn");
3062 end->SetName( ori->GetName() ); out->Add( end );
3064 ori = (
TList*)
fList->FindObject(
"V0SSelVn");
3066 end->SetName( ori->GetName() ); out->Add( end );
3069 ori = (
TList*)
fList->FindObject(
"V0SMthVn");
3071 end->SetName( ori->GetName() ); out->Add( end );
3073 ori = (
TList*)
fList->FindObject(
"V0SMthPosPosVn");
3075 end->SetName( ori->GetName() ); out->Add( end );
3077 ori = (
TList*)
fList->FindObject(
"V0SMthNegNegVn");
3079 end->SetName( ori->GetName() ); out->Add( end );
3081 ori = (
TList*)
fList->FindObject(
"V0SMthPosNegVn");
3083 end->SetName( ori->GetName() ); out->Add( end );
3085 ori = (
TList*)
fList->FindObject(
"V0SUnMthVn");
3087 end->SetName( ori->GetName() ); out->Add( end );
3096 for(
int i=0; i!=
nbins; ++i) sum += bins[i];
3105 tH2D = ((
TH2D*)tList->FindObject(
"DecayYield_PtMass" ));
3107 int nmassbins = tH2D->GetNbinsY();
3109 if( nmassbins!=sum ) {
3110 printf(
"Error: incompatible binning %d vs %d\nBYE\n",nmassbins,sum);
3114 npt = tH2D->GetNbinsX();
3115 for(
int i=0; i!=npt+1; ++i) pt[i] = tH2D->GetXaxis()->GetBinLowEdge(i+1);
3117 for(
int i=0,j=0; i!=nbins+1; ++i) {
3118 mass[i] = tH2D->GetYaxis()->GetBinLowEdge(j+1);
3122 TProfile2D *tProfileOld, *tProfileNew;
3123 TString tprofiles[31] = {
"DecayAvgPt_PtMass",
"SP_uVZEA",
"SP_uVZEC",
"SP_VZEAVZEC",
"SP_VZEATPC",
3124 "SP_VZECTPC",
"SP_uVZEAuVZEC",
"SP_uVZEAVZEAVZEC",
"SP_uVZECVZEAVZEC",
"SP_uTPCA",
3125 "SP_uTPCC",
"SP_TPCATPCC",
"SP_uTPCATPCATPCC",
"SP_uTPCCTPCATPCC",
"QC_C2",
3126 "QC_C4",
"QC_DC2",
"QC_DC4",
"QC_C2C4",
"QC_C2DC2",
3127 "QC_C2DC4",
"QC_C4DC2",
"QC_C4DC4",
"QC_DC2DC4",
"QC_pCos",
3128 "QC_pSin",
"QC_qCos",
"QC_qSin",
"QC_q2hCos",
"QC_q2hSin",
3130 for(
int i=0; i!=31; ++i) {
3131 tProfileOld = (TProfile2D*) tList->FindObject( tprofiles[i].Data() );
3132 if(!tProfileOld)
continue;
3133 TArrayD *oldsw2 = tProfileOld->GetSumw2();
3134 TArrayD *oldbsw2 = tProfileOld->GetBinSumw2();
3135 tProfileNew =
new TProfile2D( tprofiles[i].
Data(), tprofiles[i].
Data(),
3136 npt,pt,nbins,mass,
"s");
3137 tProfileNew->Sumw2();
3138 list->Add( tProfileNew );
3139 TArrayD *newsw2 = tProfileNew->GetSumw2();
3140 TArrayD *newbsw2 = tProfileNew->GetBinSumw2();
3141 for(
int x=1; x!=tProfileOld->GetNbinsX()+1; ++x) {
3142 for(
int y=1; y!=tProfileNew->GetNbinsY()+1; ++y) {
3147 Int_t binnew = tProfileNew->GetBin(x,y);
3148 Double_t minmass = tProfileNew->GetYaxis()->GetBinLowEdge( y );
3149 Double_t maxmass = tProfileNew->GetYaxis()->GetBinLowEdge( y+1 );
3150 Int_t minbin = tProfileOld->GetYaxis()->FindBin( minmass+1e-10 );
3151 Int_t maxbin = tProfileOld->GetYaxis()->FindBin( maxmass-1e-10 );
3152 for(
int k=minbin; k!=maxbin+1; ++k) {
3153 Int_t binold = tProfileOld->GetBin(x,k);
3154 Double_t wk = tProfileOld->GetBinEntries( binold );
3155 Double_t yk = tProfileOld->GetBinContent( binold );
3158 sSqWeigh += oldsw2->At(binold);
3159 if(oldbsw2->GetSize()) sSqBWeig += oldbsw2->At(binold);
3161 tProfileNew->SetBinEntries( binnew, sEntries );
3162 tProfileNew->SetBinContent( binnew, sContent );
3163 newsw2->SetAt(sSqWeigh, binnew);
3164 if(oldbsw2->GetSize()) newbsw2->SetAt(sSqBWeig, binnew);
3170 TString th2ds[15] = {
"QC_HisPt_P",
"QC_HistPt_Q",
"SP_vnVZEA",
"SP_vnVZEC",
"SP_vnTPCA",
3171 "SP_vnTPCC",
"QC_Cum2",
"QC_Cum4",
"QC_DCum2",
"QC_DCum4",
3172 "SP_vnVZEGA",
"SP_vnVZEWA",
"SP_vnTPCAA",
"QC_vn2",
"QC_vn4"};
3173 for(
int i=0; i!=15; ++i) {
3218 TProfile *pCos = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ));
3219 TProfile *pSin = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ));
3220 TProfile *qCos = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ));
3221 TProfile *qSin = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ));
3222 TProfile *q2hCos = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ));
3223 TProfile *q2hSin = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ));
3225 printf(
"**QCStoreTrackVn( %s )\n",name.Data());
3226 printf(
" Read %.0f entries in p set and %.0f entries in q set\n",pCos->GetEntries(),qCos->GetEntries());
3227 printf(
" pCos[5] %.16f | pSin[5] %.16f \n", pCos->GetBinContent(5), pSin->GetBinContent(5));
3228 printf(
" qCos[5] %.16f | qSin[5] %.16f \n", qCos->GetBinContent(5), qSin->GetBinContent(5));
3229 printf(
" q2hCos[5] %.16f | q2hSin[5] %.16f \n", q2hCos->GetBinContent(5), q2hSin->GetBinContent(5));
3232 TProfile *c2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
3233 TProfile *c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
3234 TProfile *dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
3235 TProfile *dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
3236 TProfile *c2c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
3237 TProfile *c2dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
3238 TProfile *c2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
3239 TProfile *c4dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
3240 TProfile *c4dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
3241 TProfile *dc2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
3244 double tpc_qsqr = tpc_qcos*tpc_qcos + tpc_qsin*tpc_qsin;
3247 int n = c2->GetNbinsX();
3248 for(
int i=1; i!=n+1; ++i) {
3249 double mp = pCos->GetBinEntries( i );
3250 if( mp<1 ) {
if(
fDebug>2) printf(
" bin %d:: mp (%.16f) < 1!\n",i,mp);
continue; }
3251 double mm1 = tpc_qmul*(tpc_qmul-1);
3252 if( mm1<1e-100 ) {
if(
fDebug>2) printf(
" bin %d:: mm1<1e-100!\n",i);
continue; }
3253 double mq = qCos->GetBinEntries( i );
3254 double mpmmq = mp*tpc_qmul-mq;
3255 if( mpmmq<1e-100 ) {
if(
fDebug>2) printf(
" bin %d:: mpmmq<1e-100!\n",i);
continue; }
3256 double pt = c2->GetBinCenter( i );
3257 double pcos = pCos->GetBinContent( i )*mp;
3258 double psin = pSin->GetBinContent( i )*mp;
3259 double qcos = qCos->GetBinContent( i )*mq;
3260 double qsin = qSin->GetBinContent( i )*mq;
3261 double q2hcos = q2hCos->GetBinContent( i )*mq;
3262 double q2hsin = q2hSin->GetBinContent( i )*mq;
3263 double pQ = pcos*tpc_qcos+psin*tpc_qsin;
3264 double q2nQnQn = (qcos*tpc_qcos + qsin*tpc_qsin)*tpc_qcos + (qsin*tpc_qcos-qcos*tpc_qsin)*tpc_qsin;
3265 double pnQnQ2n = (pcos*tpc_qcos - psin*tpc_qsin)*
fQTPC2hCos + (psin*tpc_qcos+pcos*tpc_qsin)*
fQTPC2hSin;
3266 double tC2 = (tpc_qsqr-tpc_qmul)/mm1;
3267 double tDC2 = (pQ-mq)/mpmmq;
3268 c2->Fill( pt, tC2, mm1 );
3269 dc2->Fill( pt, tDC2, mpmmq );
3270 c2dc2->Fill( pt, tC2*tDC2, mm1*mpmmq );
3271 double mm1m2m3 = tpc_qmul*(tpc_qmul-1)*(tpc_qmul-2)*(tpc_qmul-3);
3272 if(mm1m2m3<1e-100)
continue;
3273 double mpm3mqm1m2 = (mp*tpc_qmul-3*mq)*(tpc_qmul-1)*(tpc_qmul-2);
3274 if(mpm3mqm1m2<1e-100)
continue;
3275 double req2hqnqn =
fQTPC2hCos*(tpc_qcos*tpc_qcos-tpc_qsin*tpc_qsin)+2*fQTPC2hSin*tpc_qcos*tpc_qsin;
3276 double tC4 = (tpc_qsqr*tpc_qsqr + tpc_q2hsqr - 2*req2hqnqn - 2*(2*tpc_qsqr*(tpc_qmul-2)-tpc_qmul*(tpc_qmul-3)))/mm1m2m3;
3277 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);
3279 c4->Fill( pt, tC4, mm1m2m3 );
3280 dc4->Fill( pt, tDC4, mpm3mqm1m2 );
3281 c2c4->Fill( pt, tC2*tC4, mm1*mm1m2m3 );
3282 c2dc4->Fill( pt, tC2*tDC4, mm1*mpm3mqm1m2 );
3283 c4dc2->Fill( pt, tC4*tDC2, mm1m2m3*mpmmq );
3284 c4dc4->Fill( pt, tC4*tDC4, mm1m2m3*mpm3mqm1m2 );
3285 dc2dc4->Fill( pt, tDC2*tDC4, mpmmq*mpm3mqm1m2 );
3288 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Reset();
3289 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Reset();
3290 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Reset();
3291 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Reset();
3292 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Reset();
3293 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Reset();
3298 TProfile2D *pCos = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ));
3299 TProfile2D *pSin = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ));
3300 TProfile2D *qCos = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ));
3301 TProfile2D *qSin = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ));
3302 TProfile2D *q2hCos = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ));
3303 TProfile2D *q2hSin = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ));
3305 printf(
"**QCStoreTrackVn( %s )\n",name.Data());
3306 printf(
" Read %.0f entries in p set and %.0f entries in q set\n",pCos->GetEntries(),qCos->GetEntries());
3307 printf(
" pCos[5][5] %.16f | pSin[5][5] %.16f \n", pCos->GetBinContent(5,5), pSin->GetBinContent(5,5));
3308 printf(
" qCos[5][5] %.16f | qSin[5][5] %.16f \n", qCos->GetBinContent(5,5), qSin->GetBinContent(5,5));
3309 printf(
" q2hCos[5][5] %.16f | q2hSin[5][5] %.16f \n", q2hCos->GetBinContent(5,5), q2hSin->GetBinContent(5,5));
3312 TProfile2D *c2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
3313 TProfile2D *c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
3314 TProfile2D *dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
3315 TProfile2D *dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
3316 TProfile2D *c2c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
3317 TProfile2D *c2dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
3318 TProfile2D *c2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
3319 TProfile2D *c4dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
3320 TProfile2D *c4dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
3321 TProfile2D *dc2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
3324 double tpc_qsqr = tpc_qcos*tpc_qcos + tpc_qsin*tpc_qsin;
3327 int n = c2->GetNbinsX();
3328 int m = c2->GetNbinsY();
3329 for(
int i=1; i!=n+1; ++i) {
3330 double pt = c2->GetXaxis()->GetBinCenter( i );
3331 for(
int j=1; j!=m+1; ++j) {
3332 double ms = c2->GetYaxis()->GetBinCenter( j );
3333 int k = pCos->GetBin(i,j);
3334 double mp = pCos->GetBinEntries( k );
3335 if( mp<1 ) {
if(
fDebug>2) printf(
" bin %d,%d:: mp (%.16f) < 1!\n",i,j,mp);
continue; }
3336 double mm1 = tpc_qmul*(tpc_qmul-1);
3337 if( mm1<1e-100 ) {
if(
fDebug>2) printf(
" bin %d,%d:: mm1<1e-100!\n",i,j);
continue; }
3338 double mq = qCos->GetBinEntries( k );
3339 double mpmmq = mp*tpc_qmul-mq;
3340 if( mpmmq<1e-100 ) {
if(
fDebug>2) printf(
" bin %d,%d:: mpmmq<1e-100!\n",i,j);
continue; }
3341 double pcos = pCos->GetBinContent( i,j )*mp;
3342 double psin = pSin->GetBinContent( i,j )*mp;
3343 double qcos = qCos->GetBinContent( i,j )*mq;
3344 double qsin = qSin->GetBinContent( i,j )*mq;
3345 double q2hcos = q2hCos->GetBinContent( i,j )*mq;
3346 double q2hsin = q2hSin->GetBinContent( i,j )*mq;
3347 double pQ = pcos*tpc_qcos+psin*tpc_qsin;
3348 double q2nQnQn = (qcos*tpc_qcos + qsin*tpc_qsin)*tpc_qcos + (qsin*tpc_qcos-qcos*tpc_qsin)*tpc_qsin;
3349 double pnQnQ2n = (pcos*tpc_qcos - psin*tpc_qsin)*
fQTPC2hCos + (psin*tpc_qcos+pcos*tpc_qsin)*
fQTPC2hSin;
3350 double tC2 = (tpc_qsqr-tpc_qmul)/mm1;
3351 double tDC2 = (pQ-mq)/mpmmq;
3352 c2->Fill( pt, ms, tC2, mm1 );
3353 dc2->Fill( pt, ms, tDC2, mpmmq );
3354 c2dc2->Fill( pt, ms, tC2*tDC2, mm1*mpmmq );
3355 double mm1m2m3 = tpc_qmul*(tpc_qmul-1)*(tpc_qmul-2)*(tpc_qmul-3);
3356 if(mm1m2m3<1e-100)
continue;
3357 double mpm3mqm1m2 = (mp*tpc_qmul-3*mq)*(tpc_qmul-1)*(tpc_qmul-2);
3358 if(mpm3mqm1m2<1e-100)
continue;
3359 double req2hqnqn =
fQTPC2hCos*(tpc_qcos*tpc_qcos-tpc_qsin*tpc_qsin)+2*fQTPC2hSin*tpc_qcos*tpc_qsin;
3360 double tC4 = (tpc_qsqr*tpc_qsqr + tpc_q2hsqr - 2*req2hqnqn - 2*(2*tpc_qsqr*(tpc_qmul-2)-tpc_qmul*(tpc_qmul-3)))/mm1m2m3;
3361 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);
3363 c4->Fill( pt, ms, tC4, mm1m2m3 );
3364 dc4->Fill( pt, ms, tDC4, mpm3mqm1m2 );
3365 c2c4->Fill( pt, ms, tC2*tC4, mm1*mm1m2m3 );
3366 c2dc4->Fill( pt, ms, tC2*tDC4, mm1*mpm3mqm1m2 );
3367 c4dc2->Fill( pt, ms, tC4*tDC2, mm1m2m3*mpmmq );
3368 c4dc4->Fill( pt, ms, tC4*tDC4, mm1m2m3*mpm3mqm1m2 );
3369 dc2dc4->Fill( pt, ms, tDC2*tDC4, mpmmq*mpm3mqm1m2 );
3373 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Reset();
3374 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Reset();
3375 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Reset();
3376 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Reset();
3377 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Reset();
3378 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Reset();
3403 qaqc = (vzea_qmcos*vzec_qmcos + vzea_qmsin*vzec_qmsin);
3404 uQa = (cosn*vzea_qmcos + sinn*vzea_qmsin);
3405 uQc = (cosn*vzec_qmcos + sinn*vzec_qmsin);
3408 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQVZEA" ))->Fill( cosmc,uQa );
3409 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQVZEC" ))->Fill( cosmc,uQc );
3410 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI" ))->Fill( pt,cosmc );
3412 Double_t qaqt = (vzea_qmcos*tpc_qmcos + vzea_qmsin*tpc_qmsin);
3413 Double_t qcqt = (vzec_qmcos*tpc_qmcos + vzec_qmsin*tpc_qmsin);
3414 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" ))->Fill( pt,uQa,
fQVZEA );
3415 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" ))->Fill( pt,uQc,
fQVZEC );
3416 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" ))->Fill( pt,qaqc,
fQVZEA*
fQVZEC );
3417 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" ))->Fill( pt,qaqt,
fQVZEA*qtpc );
3418 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" ))->Fill( pt,qcqt,fQVZEC*qtpc );
3420 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" ))->Fill( pt,uQa*uQc,
fQVZEA*fQVZEC );
3421 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" ))->Fill( pt,uQa*qaqc,
fQVZEA*
fQVZEA*fQVZEC );
3422 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" ))->Fill( pt,uQc*qaqc,fQVZEC*
fQVZEA*fQVZEC );
3424 qaqc = (tpca_qmcos*tpcc_qmcos + tpca_qmsin*tpcc_qmsin);
3426 uQ = (cosn*tpca_qmcos + sinn*tpca_qmsin);
3427 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" ))->Fill( pt,uQ,
fQTPCA );
3428 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" ))->Fill( pt,uQ*qaqc,
fQTPCA*
fQTPCA*fQTPCC );
3430 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQTPCA" ))->Fill( cosmc,uQ );
3433 uQ = (cosn*tpcc_qmcos + sinn*tpcc_qmsin);
3434 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" ))->Fill( pt,uQ,fQTPCC );
3435 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" ))->Fill( pt,uQ*qaqc,fQTPCC*
fQTPCA*fQTPCC );
3437 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI_uQTPCC" ))->Fill( cosmc,uQ );
3440 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" ))->Fill( pt,qaqc,
fQTPCA*fQTPCC );
3442 ((
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_P" ))->Fill( pt );
3443 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Fill( pt, cosn, 1.0 );
3444 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Fill( pt, sinn, 1.0 );
3446 ((
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_Q" ))->Fill( pt );
3447 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Fill( pt, cosn, 1.0 );
3448 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Fill( pt, sinn, 1.0 );
3449 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Fill( pt, cos2n, 1.0 );
3450 ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Fill( pt, sin2n, 1.0 );
3455 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"DecayYield_PtMass" ))->Fill( pt,ms );
3456 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"DecayAvgPt_PtMass" ))->Fill( pt,ms,pt );
3479 qaqc = (vzea_qmcos*vzec_qmcos + vzea_qmsin*vzec_qmsin);
3480 uQa = (cosn*vzea_qmcos + sinn*vzea_qmsin);
3481 uQc = (cosn*vzec_qmcos + sinn*vzec_qmsin);
3484 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"MC_COSNDPHI" ))->Fill( pt,ms,cosmc );
3486 Double_t qaqt = (vzea_qmcos*tpc_qmcos + vzea_qmsin*tpc_qmsin);
3487 Double_t qcqt = (vzec_qmcos*tpc_qmcos + vzec_qmsin*tpc_qmsin);
3488 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" ))->Fill( pt,ms,uQa,
fQVZEA );
3489 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" ))->Fill( pt,ms,uQc,
fQVZEC );
3490 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" ))->Fill( pt,ms,qaqc,
fQVZEA*
fQVZEC );
3491 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" ))->Fill( pt,ms,qaqt,
fQVZEA*qtpc );
3492 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" ))->Fill( pt,ms,qcqt,fQVZEC*qtpc );
3494 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" ))->Fill( pt,ms,uQa*uQc,
fQVZEA*fQVZEC );
3495 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" ))->Fill( pt,ms,uQa*qaqc,
fQVZEA*
fQVZEA*fQVZEC );
3496 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" ))->Fill( pt,ms,uQc*qaqc,fQVZEC*
fQVZEA*fQVZEC );
3498 qaqc = (tpca_qmcos*tpcc_qmcos + tpca_qmsin*tpcc_qmsin);
3500 uQ = (cosn*tpca_qmcos + sinn*tpca_qmsin);
3501 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" ))->Fill( pt,ms,uQ,
fQTPCA );
3502 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" ))->Fill( pt,ms,uQ*qaqc,
fQTPCA*
fQTPCA*fQTPCC );
3504 uQ = (cosn*tpcc_qmcos + sinn*tpcc_qmsin);
3505 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" ))->Fill( pt,ms,uQ,fQTPCC );
3506 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" ))->Fill( pt,ms,uQ*qaqc,fQTPCC*
fQTPCA*fQTPCC );
3508 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" ))->Fill( pt,ms,qaqc,
fQTPCA*fQTPCC );
3510 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_P" ))->Fill( pt,ms );
3511 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pCos" ))->Fill( pt, ms, cosn, 1.0 );
3512 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_pSin" ))->Fill( pt, ms, sinn, 1.0 );
3514 ((
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_HistPt_Q" ))->Fill( pt,ms );
3515 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qCos" ))->Fill( pt, ms, cosn, 1.0 );
3516 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_qSin" ))->Fill( pt, ms, sinn, 1.0 );
3517 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hCos" ))->Fill( pt, ms, cos2n, 1.0 );
3518 ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_q2hSin" ))->Fill( pt, ms, sin2n, 1.0 );
3529 if(ret)
return kTRUE;
3539 TProfile *uQa, *uQc, *qaqc, *uQaqaqc, *uQcqaqc;
3540 TArrayD *pasww, *pbsww, *pcsww;
3542 printf(
"<<%s>> SP TPC\n",name.Data());
3543 uQa = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" );
3544 uQc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" );
3545 qaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" );
3546 uQaqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" );
3547 uQcqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" );
3548 pasww = uQa->GetBinSumw2();
3549 pbsww = uQc->GetBinSumw2();
3550 pcsww = qaqc->GetBinSumw2();
3552 TH1D *sptpca = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCA" );
3553 TH1D *sptpcc = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCC" );
3554 TH1D *sptpcaa = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCAA" );
3556 for(
Int_t i=1; i!=sptpcaa->GetNbinsX()+1; ++i) {
3557 sptpcaa->SetBinContent(i,0);
3558 sptpcaa->SetBinError(i,0);
3559 sptpca->SetBinContent(i,0);
3560 sptpca->SetBinError(i,0);
3561 sptpcc->SetBinContent(i,0);
3562 sptpcc->SetBinError(i,0);
3563 double a = uQa->GetBinContent(i);
3564 double b = uQc->GetBinContent(i);
3565 double c = qaqc->GetBinContent(i);
3568 if(c<1e-100)
continue;
3570 double vna = a/TMath::Sqrt(c);
3571 sptpca->SetBinContent(i,vna);
3573 double vnc = b/TMath::Sqrt(c);
3574 sptpcc->SetBinContent(i,vnc);
3576 double vn = (vna + vnc)/2.0;
3577 sptpcaa->SetBinContent(i,vn);
3579 double asw = uQa->GetBinEntries(i);
3580 double bsw = uQc->GetBinEntries(i);
3581 double csw = qaqc->GetBinEntries(i);
3582 if(asw<1e-100||bsw<1e-100||csw<1e-100)
continue;
3583 double asww = pasww->At(i);
3584 double bsww = pbsww->At(i);
3585 double csww = pcsww->At(i);
3586 if(asww<1e-100||bsww<1e-100||csww<1e-100)
continue;
3587 if((1<1e-100+asww/asw/asw)||(1<1e-100+bsww/bsw/bsw)||(1<1e-100+csww/csw/csw))
continue;
3588 if(TMath::AreEqualAbs(asww,asw*asw,1e-100)||
3589 TMath::AreEqualAbs(bsww,bsw*bsw,1e-100)||
3590 TMath::AreEqualAbs(csww,csw*csw,1e-100))
continue;
3591 double ac = uQaqaqc->GetBinContent(i);
3592 double bc = uQcqaqc->GetBinContent(i);
3593 double acsw = uQaqaqc->GetBinEntries(i);
3594 double bcsw = uQcqaqc->GetBinEntries(i);
3595 double ea = uQa->GetBinError(i)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3596 double eb = uQc->GetBinError(i)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3597 double ec = qaqc->GetBinError(i)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3601 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3602 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3603 double evna = 1.0/TMath::Abs(c) * ( ea*ea + vna*vna/TMath::Abs(c)/4.0*ec*ec - vna/TMath::Sqrt(c)*eac );
3604 double evnc = 1.0/TMath::Abs(c) * ( eb*eb + vnc*vnc/TMath::Abs(c)/4.0*ec*ec - vnc/TMath::Sqrt(c)*ebc );
3607 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3608 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3609 sptpca->SetBinError(i,evna);
3610 sptpcc->SetBinError(i,evnc);
3611 sptpcaa->SetBinError(i,TMath::Sqrt(evna*evna+evnc*evnc)/2.0);
3614 printf(
"<<%s>> SP VZE\n",name.Data());
3615 double cvzea2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEA"))->GetBinContent( 1 );
3616 double cvzec2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEC"))->GetBinContent( 1 );
3617 if( TMath::AreEqualAbs(cvzea2+cvzec2,0,1e-100) )
return;
3618 uQa = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" );
3619 uQc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" );
3620 qaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" );
3621 uQaqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" );
3622 uQcqaqc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" );
3623 pasww = uQa->GetBinSumw2();
3624 pbsww = uQc->GetBinSumw2();
3625 pcsww = qaqc->GetBinSumw2();
3627 TProfile *qaqt = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" );
3628 TProfile *qcqt = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" );
3629 TProfile *uQauQc = (TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" );
3631 TH1D *spvzea = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEA" );
3632 TH1D *spvzec = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEC" );
3633 TH1D *spvzega = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEGA" );
3634 TH1D *spvzewa = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEWA" );
3635 for(
Int_t i=1; i!=spvzewa->GetNbinsX()+1; ++i) {
3636 spvzega->SetBinContent(i,0);
3637 spvzega->SetBinError(i,0);
3638 spvzewa->SetBinContent(i,0);
3639 spvzewa->SetBinError(i,0);
3640 spvzea->SetBinContent(i,0);
3641 spvzea->SetBinError(i,0);
3642 spvzec->SetBinContent(i,0);
3643 spvzec->SetBinError(i,0);
3644 double asw = uQa->GetBinEntries(i);
3645 double bsw = uQc->GetBinEntries(i);
3646 double csw = qaqc->GetBinEntries(i);
3647 if(asw<1e-1||bsw<1e-1||csw<1e-1)
continue;
3648 double asww = pasww->At(i);
3649 double bsww = pbsww->At(i);
3650 double csww = pcsww->At(i);
3651 if(asww<1e-1||bsww<1e-1||csww<1e-1)
continue;
3652 if((1<asww/asw/asw)||(1<bsww/bsw/bsw)||(1<csww/csw/csw))
continue;
3653 double a = uQa->GetBinContent(i);
3654 double b = uQc->GetBinContent(i);
3655 double c = qaqc->GetBinContent(i);
3656 double at = qaqt->GetBinContent(i);
3657 double bt = qcqt->GetBinContent(i);
3658 if(TMath::AreEqualAbs(a,0,1e-10))
continue;
3659 if(TMath::AreEqualAbs(b,0,1e-10))
continue;
3660 if(TMath::AreEqualAbs(c,0,1e-10))
continue;
3661 if(TMath::AreEqualAbs(at,0,1e-10))
continue;
3662 if(TMath::AreEqualAbs(bt,0,1e-10))
continue;
3664 double aa = c*at/bt;
3665 if(aa<1e-100)
continue;
3666 double vna = a/TMath::Sqrt(aa);
3667 spvzea->SetBinContent(i,vna);
3669 double bb = c*bt/at;
3670 if(bb<1e-100)
continue;
3671 double vnc = b/TMath::Sqrt(bb);
3672 spvzec->SetBinContent(i,vnc);
3674 double vnwa = (cvzea2*vna + cvzec2*vnc) / (cvzea2+cvzec2);
3675 spvzewa->SetBinContent(i,vnwa);
3677 double vnga = a*b/
c;
3678 if(vnga<1e-100)
continue;
3679 vnga = TMath::Sqrt(vnga);
3680 spvzega->SetBinContent(i,vnga);
3682 double ab = uQauQc->GetBinContent(i);
3683 double ac = uQaqaqc->GetBinContent(i);
3684 double bc = uQcqaqc->GetBinContent(i);
3685 double absw = uQauQc->GetBinEntries(i);
3686 double acsw = uQaqaqc->GetBinEntries(i);
3687 double bcsw = uQcqaqc->GetBinEntries(i);
3688 double ea = uQa->GetBinError(i)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3689 double eb = uQc->GetBinError(i)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3690 double ec = qaqc->GetBinError(i)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3691 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;
3692 double eab = (ab-a*b)/(1-absw/asw/bsw)*absw/asw/bsw;
3693 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3694 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3695 double nc, nec, neac, nebc;
3700 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 );
3705 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 );
3706 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3707 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3708 spvzea->SetBinError(i,evna);
3709 spvzec->SetBinError(i,evnc);
3710 double evnwa = TMath::Sqrt( cvzea2*cvzea2*evna*evna + cvzec2*cvzec2*evnc*evnc )/(cvzea2+cvzec2);
3711 spvzewa->SetBinError(i,evnwa);
3712 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 );
3713 if(evnga>1e-100) evnga = TMath::Sqrt(evnga);
else evnga=0;
3714 spvzega->SetBinError(i,evnga);
3716 printf(
"<<%s>> QC TPC\n",name.Data());
3718 TH1D *resC2 = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum2" );
3719 TH1D *resC4 = (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum4" );
3720 TH1D *resDC2= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum2" );
3721 TH1D *resDC4= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum4" );
3722 TH1D *resvn2= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn2" );
3723 TH1D *resvn4= (
TH1D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn4" );
3725 TProfile *c2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
3726 TProfile *c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
3727 TProfile *dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
3728 TProfile *dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
3729 TProfile *c2c4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
3730 TProfile *c2dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
3731 TProfile *c2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
3732 TProfile *c4dc2 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
3733 TProfile *c4dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
3734 TProfile *dc2dc4 = ((TProfile*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
3735 TArrayD *c2sww = c2->GetBinSumw2();
3736 TArrayD *c4sww = c4->GetBinSumw2();
3737 TArrayD *dc2sww= dc2->GetBinSumw2();
3738 TArrayD *dc4sww= dc4->GetBinSumw2();
3739 for(
Int_t i=1; i!=resvn2->GetNbinsX()+1; ++i) {
3741 double v_c2sw = c2->GetBinEntries(i);
3742 if(v_c2sw<1e-100)
continue;
3743 double v_c2sww = c2sww->At(i);
3744 double v_c2 = c2->GetBinContent(i);
3745 double e_c2 = TMath::Sqrt(v_c2sww)/v_c2sw*c2->GetBinError(i);
3748 resC2->SetBinContent(i, cum2 );
3749 resC2->SetBinError(i, ecum2 );
3751 double v_c4sw = c4->GetBinEntries(i);
3752 if(v_c4sw<1e-100)
continue;
3753 double v_c4sww = c4sww->At(i);
3754 double v_c4 = c4->GetBinContent(i);
3755 double e_c4 = TMath::Sqrt(v_c4sww)/v_c4sw*c4->GetBinError(i);
3756 double v_c2c4 = c2c4->GetBinContent(i);
3757 double v_c2c4sw = c2c4->GetBinEntries(i);
3758 if(TMath::AreEqualAbs(v_c2c4sw/v_c2sw/v_c4sw,1,1e-100))
continue;
3759 double covc2c4 = v_c2c4sw/v_c2sw/v_c4sw*(v_c2c4 - v_c2*v_c4)/(1-v_c2c4sw/v_c2sw/v_c4sw);
3760 double cum4 = v_c4 - 2*v_c2*v_c2;
3761 double ecum4= 16.0*v_c2*v_c2*e_c2*e_c2 + e_c4*e_c4 - 8.0*v_c2*covc2c4;
3762 if(ecum4<1e-100)
continue;
3763 ecum4 = TMath::Sqrt( ecum4 );
3764 resC4->SetBinContent(i, cum4 );
3765 resC4->SetBinError(i, ecum4 );
3767 double v_dc2sw = dc2->GetBinEntries(i);
3768 if(v_dc2sw<1)
continue;
3769 double v_dc2 = dc2->GetBinContent(i);
3770 double v_dc2sww = dc2sww->At(i);
3771 double e_dc2 = TMath::Sqrt(v_dc2sww)/v_dc2sw*dc2->GetBinError(i);
3772 double dcum2 = v_dc2;
3773 double edcum2= e_dc2;
3774 resDC2->SetBinContent(i, dcum2 );
3775 resDC2->SetBinError(i, edcum2 );
3777 if(v_c2<1e-100)
continue;
3778 double dv22 = v_dc2/TMath::Sqrt(v_c2);
3779 double v_c2dc2 = c2dc2->GetBinContent(i);
3780 double v_c2dc2sw = c2dc2->GetBinEntries(i);
3781 if(TMath::AreEqualAbs(v_c2dc2sw/v_c2sw/v_dc2sw,1,1e-100))
continue;
3782 double covc2dc2 = v_c2dc2sw/v_c2sw/v_dc2sw*(v_c2dc2 - v_c2*v_dc2)/(1-v_c2dc2sw/v_c2sw/v_dc2sw);
3783 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);
3785 if(edv22<1e-100)
continue;
3786 edv22 = TMath::Sqrt(edv22);
3787 resvn2->SetBinContent(i,dv22);
3788 resvn2->SetBinError(i,edv22);
3790 double v_dc4sw = dc4->GetBinEntries(i);
3791 if(v_dc4sw<1)
continue;
3792 double v_dc4 = dc4->GetBinContent(i);
3793 double v_dc4sww = dc4sww->At(i);
3794 double e_dc4 = TMath::Sqrt(v_dc4sww)/v_dc4sw*dc4->GetBinError(i);
3795 double dcum4 = v_dc4 - 2*v_c2*v_dc2;
3796 double v_c2dc4 = c2dc4->GetBinContent(i);
3797 double v_c2dc4sw = c2dc4->GetBinEntries(i);
3798 if(TMath::AreEqualAbs(v_c2dc4sw/v_c2sw/v_dc4sw,1,1e-100))
continue;
3799 double covc2dc4 = v_c2dc4sw/v_c2sw/v_dc4sw*(v_c2dc4 - v_c2*v_dc4)/(1-v_c2dc4sw/v_c2sw/v_dc4sw);
3800 double v_dc2dc4 = dc2dc4->GetBinContent(i);
3801 double v_dc2dc4sw = dc2dc4->GetBinEntries(i);
3802 if(TMath::AreEqualAbs(v_dc2dc4sw/v_dc2sw/v_dc4sw,1,1e-100))
continue;
3803 double covdc2dc4 = v_dc2dc4sw/v_dc2sw/v_dc4sw*(v_dc2dc4 - v_dc2*v_dc4)/(1-v_dc2dc4sw/v_dc2sw/v_dc4sw);
3804 double edcum4= ( +4.0*v_dc2*v_dc2*e_c2*e_c2
3805 +4.0*v_c2*v_c2*e_dc2*e_dc2
3807 +8.0*v_c2*v_dc2*covc2dc2
3809 -4.0*v_c2*covdc2dc4 );
3810 if(edcum4<1e-100)
continue;
3811 edcum4 = TMath::Sqrt(edcum4);
3812 resDC4->SetBinContent(i, dcum4 );
3813 resDC4->SetBinError(i, edcum4 );
3815 if(cum4>1e-100)
continue;
3816 double dv24 = -dcum4/TMath::Power(-cum4,0.75);
3817 double dterm1 = 2*v_c2*v_c2*v_dc2 - 3*v_c2*v_dc4 + 2*v_c4*v_dc2;
3818 double dterm2 = 9.0/16.0*dcum4*dcum4;
3819 double dterm3 = 4.0*v_c2*v_c2*cum4*cum4;
3820 double dterm4 = cum4*cum4;
3821 double dterm5 = -3.0/2.0*dcum4*dterm1;
3822 double dterm6 = -4.0*v_c2*cum4*dterm1;
3823 double dterm7 = -2.0*cum4*dterm1;
3824 double dterm8 = 3.0*v_c2*cum4*dcum4;
3825 double dterm9 = 3.0/2.0*cum4*dcum4;
3826 double dterm10= 4*v_c2*cum4*cum4;
3827 double v_c4dc2 = c4dc2->GetBinContent(i);
3828 double v_c4dc2sw = c4dc2->GetBinEntries(i);
3829 if(TMath::AreEqualAbs(v_c4dc2sw/v_c4sw/v_dc2sw,1,1e-100))
continue;
3830 double covc4dc2 = v_c4dc2sw/v_c4sw/v_dc2sw*(v_c4dc2 - v_c4*v_dc2)/(1-v_c4dc2sw/v_c4sw/v_dc2sw);
3831 double v_c4dc4 = c4dc4->GetBinContent(i);
3832 double v_c4dc4sw = c4dc4->GetBinEntries(i);
3833 if(TMath::AreEqualAbs(v_c4dc4sw/v_c4sw/v_dc4sw,1,1e-100))
continue;
3834 double covc4dc4 = v_c4dc4sw/v_c4sw/v_dc4sw*(v_c4dc4 - v_c4*v_dc4)/(1-v_c4dc4sw/v_c4sw/v_dc4sw);
3835 double edv24= 1.0/TMath::Power(-cum4,3.5)*(+dterm1*dterm1*e_c2*e_c2
3844 -dterm10*covdc2dc4);
3845 if(edv24<1e-100)
continue;
3846 edv24 = TMath::Sqrt(edv24);
3847 resvn4->SetBinContent(i,dv24);
3848 resvn4->SetBinError(i,edv24);
3853 TProfile2D *uQa, *uQc, *qaqc, *uQaqaqc, *uQcqaqc;
3854 TArrayD *pasww, *pbsww, *pcsww;
3856 printf(
"<<%s>> SP TPC\n",name.Data());
3857 uQa = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCA" );
3858 uQc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCC" );
3859 qaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_TPCATPCC" );
3860 uQaqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCATPCATPCC" );
3861 uQcqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uTPCCTPCATPCC" );
3862 pasww = uQa->GetBinSumw2();
3863 pbsww = uQc->GetBinSumw2();
3864 pcsww = qaqc->GetBinSumw2();
3866 TH2D *sptpca = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCA" );
3867 TH2D *sptpcc = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCC" );
3868 TH2D *sptpcaa = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnTPCAA" );
3870 for(
Int_t i=1; i!=sptpcaa->GetNbinsX()+1; ++i) {
3871 for(
Int_t j=1; j!=sptpcaa->GetNbinsY()+1; ++j) {
3872 sptpcaa->SetBinContent(i,j,0);
3873 sptpcaa->SetBinError(i,j,0);
3874 sptpca->SetBinContent(i,j,0);
3875 sptpca->SetBinError(i,j,0);
3876 sptpcc->SetBinContent(i,j,0);
3877 sptpcc->SetBinError(i,j,0);
3878 double a = uQa->GetBinContent(i,j);
3879 double b = uQc->GetBinContent(i,j);
3880 double c = qaqc->GetBinContent(i,j);
3883 if(c<1e-100) {printf(
"skipping i=%d, j=%d due to c=%.16f\n",i,j,c);
continue;}
3885 double vna = a/TMath::Sqrt(c);
3886 sptpca->SetBinContent(i,j,vna);
3888 double vnc = b/TMath::Sqrt(c);
3889 sptpcc->SetBinContent(i,j,vnc);
3891 double vn = (vna + vnc)/2.0;
3892 sptpcaa->SetBinContent(i,j,vn);
3894 int k = sptpcaa->GetBin(i,j);
3895 double asw = uQa->GetBinEntries(k);
3896 double bsw = uQc->GetBinEntries(k);
3897 double csw = qaqc->GetBinEntries(k);
3898 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;}
3899 double asww = pasww->At(k);
3900 double bsww = pbsww->At(k);
3901 double csww = pcsww->At(k);
3902 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;}
3903 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;}
3904 if(TMath::AreEqualAbs(asww,asw*asw,1e-100)||
3905 TMath::AreEqualAbs(bsww,bsw*bsw,1e-100)||
3906 TMath::AreEqualAbs(csww,csw*csw,1e-100)) {printf(
"skipping i=%d, j=%d due to funny coincidence\n",i,j);
continue;}
3907 double ac = uQaqaqc->GetBinContent(i,j);
3908 double bc = uQcqaqc->GetBinContent(i,j);
3909 double acsw = uQaqaqc->GetBinEntries(k);
3910 double bcsw = uQcqaqc->GetBinEntries(k);
3911 double ea = uQa->GetBinError(i,j)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
3912 double eb = uQc->GetBinError(i,j)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
3913 double ec = qaqc->GetBinError(i,j)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
3917 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
3918 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
3919 double evna = 1.0/TMath::Abs(c) * ( ea*ea + vna*vna/TMath::Abs(c)/4.0*ec*ec - vna/TMath::Sqrt(c)*eac );
3920 double evnc = 1.0/TMath::Abs(c) * ( eb*eb + vnc*vnc/TMath::Abs(c)/4.0*ec*ec - vnc/TMath::Sqrt(c)*ebc );
3923 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
3924 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
3925 sptpca->SetBinError(i,j,evna);
3926 sptpcc->SetBinError(i,j,evnc);
3927 sptpcaa->SetBinError(i,j,TMath::Sqrt(evna*evna+evnc*evnc)/2.0);
3931 printf(
"<<%s>> SP VZE\n",name.Data());
3932 double cvzea2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEA"))->GetBinContent( 1 );
3933 double cvzec2 = ((
TH1D*)((
TList*)
fList->FindObject(
"MakeQSpy"))->
FindObject(
"ChiSquaredVZEC"))->GetBinContent( 1 );
3934 if( TMath::AreEqualAbs(cvzea2+cvzec2,0,1e-100) )
return;
3935 uQa = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEA" );
3936 uQc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEC" );
3937 qaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEAVZEC" );
3938 uQaqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAVZEAVZEC" );
3939 uQcqaqc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZECVZEAVZEC" );
3940 pasww = uQa->GetBinSumw2();
3941 pbsww = uQc->GetBinSumw2();
3942 pcsww = qaqc->GetBinSumw2();
3944 TProfile2D *qaqt = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZEATPC" );
3945 TProfile2D *qcqt = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_VZECTPC" );
3946 TProfile2D *uQauQc = (TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_uVZEAuVZEC" );
3948 TH2D *spvzea = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEA" );
3949 TH2D *spvzec = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEC" );
3950 TH2D *spvzega = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEGA" );
3951 TH2D *spvzewa = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"SP_vnVZEWA" );
3952 for(
Int_t i=1; i!=spvzewa->GetNbinsX()+1; ++i) {
3953 for(
Int_t j=1; j!=spvzewa->GetNbinsY()+1; ++j) {
3954 spvzega->SetBinContent(i,j,0);
3955 spvzega->SetBinError(i,j,0);
3956 spvzewa->SetBinContent(i,j,0);
3957 spvzewa->SetBinError(i,j,0);
3958 spvzea->SetBinContent(i,j,0);
3959 spvzea->SetBinError(i,j,0);
3960 spvzec->SetBinContent(i,j,0);
3961 spvzec->SetBinError(i,j,0);
3962 double a = uQa->GetBinContent(i,j);
3963 double b = uQc->GetBinContent(i,j);
3964 double c = qaqc->GetBinContent(i,j);
3965 double at = qaqt->GetBinContent(i,j);
3966 double bt = qcqt->GetBinContent(i,j);
3967 if(TMath::AreEqualAbs(a,0,1e-100)) {printf(
"skipping A\n");
continue;}
3968 if(TMath::AreEqualAbs(b,0,1e-100)) {printf(
"skipping B\n");
continue;}
3969 if(TMath::AreEqualAbs(c,0,1e-100)) {printf(
"skipping C\n");
continue;}
3970 if(TMath::AreEqualAbs(at,0,1e-100)) {printf(
"skipping AT\n");
continue;}
3971 if(TMath::AreEqualAbs(bt,0,1e-100)) {printf(
"skipping CT\n");
continue;}
3973 double aa = c*at/bt;
3974 if(aa<1e-100) {printf(
"AA\n");
continue;}
3975 double vna = a/TMath::Sqrt(aa);
3976 spvzea->SetBinContent(i,j,vna);
3978 double bb = c*bt/at;
3979 if(bb<1e-100) {printf(
"BB\n");
continue;}
3980 double vnc = b/TMath::Sqrt(bb);
3981 spvzec->SetBinContent(i,j,vnc);
3983 double vnwa = (cvzea2*vna + cvzec2*vnc) / (cvzea2+cvzec2);
3984 spvzewa->SetBinContent(i,j,vnwa);
3986 double vnga = a*b/
c;
3987 if(vnga<1e-100)
continue;
3988 vnga = TMath::Sqrt(vnga);
3989 spvzega->SetBinContent(i,j,vnga);
3991 int k = spvzea->GetBin(i,j);
3992 double asw = uQa->GetBinEntries(k);
3993 double bsw = uQc->GetBinEntries(k);
3994 double csw = qaqc->GetBinEntries(k);
3995 if(asw<1e-100||bsw<1e-100||csw<1e-100)
continue;
3996 double asww = pasww->At(k);
3997 double bsww = pbsww->At(k);
3998 double csww = pcsww->At(k);
3999 if(asww<1e-100||bsww<1e-100||csww<1e-100)
continue;
4000 if((1<asww/asw/asw)||(1<bsww/bsw/bsw)||(1<csww/csw/csw))
continue;
4001 double ab = uQauQc->GetBinContent(i,j);
4002 double ac = uQaqaqc->GetBinContent(i,j);
4003 double bc = uQcqaqc->GetBinContent(i,j);
4004 double absw = uQauQc->GetBinEntries(k);
4005 double acsw = uQaqaqc->GetBinEntries(k);
4006 double bcsw = uQcqaqc->GetBinEntries(k);
4007 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;
4008 double ea = uQa->GetBinError(i,j)*TMath::Sqrt(asww)/asw/TMath::Sqrt(1-asww/asw/asw);
4009 double eb = uQc->GetBinError(i,j)*TMath::Sqrt(bsww)/bsw/TMath::Sqrt(1-bsww/bsw/bsw);
4010 double ec = qaqc->GetBinError(i,j)*TMath::Sqrt(csww)/csw/TMath::Sqrt(1-csww/csw/csw);
4011 double eab = (ab-a*b)/(1-absw/asw/bsw)*absw/asw/bsw;
4012 double ebc = (bc-b*
c)/(1-bcsw/bsw/csw)*bcsw/bsw/csw;
4013 double eac = (ac-a*
c)/(1-acsw/asw/csw)*acsw/asw/csw;
4014 double nc, nec, neac, nebc;
4019 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 );
4024 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 );
4025 if(evna>1e-100) evna = TMath::Sqrt(evna);
else evna=0;
4026 if(evnc>1e-100) evnc = TMath::Sqrt(evnc);
else evnc=0;
4027 spvzea->SetBinError(i,j,evna);
4028 spvzec->SetBinError(i,j,evnc);
4029 double evnwa = TMath::Sqrt( cvzea2*cvzea2*evna*evna + cvzec2*cvzec2*evnc*evnc )/(cvzea2+cvzec2);
4030 spvzewa->SetBinError(i,j,evnwa);
4031 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 );
4032 if(evnga>1e-100) evnga = TMath::Sqrt(evnga);
else evnga=0;
4033 spvzega->SetBinError(i,j,evnga);
4036 printf(
"<<%s>> QC TPC\n",name.Data());
4038 TH2D *resC2 = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum2" );
4039 TH2D *resC4 = (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_Cum4" );
4040 TH2D *resDC2= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum2" );
4041 TH2D *resDC4= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DCum4" );
4042 TH2D *resvn2= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn2" );
4043 TH2D *resvn4= (
TH2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_vn4" );
4045 TProfile2D *c2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2" ));
4046 TProfile2D *c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4" ));
4047 TProfile2D *dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2" ));
4048 TProfile2D *dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC4" ));
4049 TProfile2D *c2c4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2C4" ));
4050 TProfile2D *c2dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC2" ));
4051 TProfile2D *c2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C2DC4" ));
4052 TProfile2D *c4dc2 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC2" ));
4053 TProfile2D *c4dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_C4DC4" ));
4054 TProfile2D *dc2dc4 = ((TProfile2D*)((
TList*)
fList->FindObject(name.Data()))->FindObject(
"QC_DC2DC4" ));
4055 TArrayD *c2sww = c2->GetBinSumw2();
4056 TArrayD *c4sww = c4->GetBinSumw2();
4057 TArrayD *dc2sww= dc2->GetBinSumw2();
4058 TArrayD *dc4sww= dc4->GetBinSumw2();
4059 for(
Int_t i=1; i!=resvn2->GetNbinsX()+1; ++i) {
4060 for(
Int_t j=1; j!=resvn2->GetNbinsY()+1; ++j) {
4062 int k = c2->GetBin(i,j);
4063 double v_c2sw = c2->GetBinEntries(k);
4064 if(v_c2sw<1e-100)
continue;
4065 double v_c2sww = c2sww->At(k);
4066 double v_c2 = c2->GetBinContent(i,j);
4067 double e_c2 = TMath::Sqrt(v_c2sww)/v_c2sw*c2->GetBinError(i,j);
4070 resC2->SetBinContent(i,j, cum2 );
4071 resC2->SetBinError(i,j, ecum2 );
4073 double v_c4sw = c4->GetBinEntries(k);
4074 if(v_c4sw<1e-100)
continue;
4075 double v_c4sww = c4sww->At(k);
4076 double v_c4 = c4->GetBinContent(i,j);
4077 double e_c4 = TMath::Sqrt(v_c4sww)/v_c4sw*c4->GetBinError(i,j);
4078 double v_c2c4 = c2c4->GetBinContent(i,j);
4079 double v_c2c4sw = c2c4->GetBinEntries(k);
4080 if(TMath::AreEqualAbs(v_c2c4sw/v_c2sw/v_c4sw,1,1e-100))
continue;
4081 double covc2c4 = v_c2c4sw/v_c2sw/v_c4sw*(v_c2c4 - v_c2*v_c4)/(1-v_c2c4sw/v_c2sw/v_c4sw);
4082 double cum4 = v_c4 - 2*v_c2*v_c2;
4083 double ecum4= 16.0*v_c2*v_c2*e_c2*e_c2 + e_c4*e_c4 - 8.0*v_c2*covc2c4;
4084 if(ecum4<1e-100)
continue;
4085 ecum4 = TMath::Sqrt( ecum4 );
4086 resC4->SetBinContent(i,j, cum4 );
4087 resC4->SetBinError(i,j, ecum4 );
4089 double v_dc2sw = dc2->GetBinEntries(k);
4090 if(v_dc2sw<1)
continue;
4091 double v_dc2 = dc2->GetBinContent(i,j);
4092 double v_dc2sww = dc2sww->At(k);
4093 double e_dc2 = TMath::Sqrt(v_dc2sww)/v_dc2sw*dc2->GetBinError(i,j);
4094 double dcum2 = v_dc2;
4095 double edcum2= e_dc2;
4096 resDC2->SetBinContent(i,j, dcum2 );
4097 resDC2->SetBinError(i,j, edcum2 );
4099 if(v_c2<1e-100)
continue;
4100 double dv22 = v_dc2/TMath::Sqrt(v_c2);
4101 double v_c2dc2 = c2dc2->GetBinContent(i,j);
4102 double v_c2dc2sw = c2dc2->GetBinEntries(k);
4103 if(TMath::AreEqualAbs(v_c2dc2sw/v_c2sw/v_dc2sw,1,1e-100))
continue;
4104 double covc2dc2 = v_c2dc2sw/v_c2sw/v_dc2sw*(v_c2dc2 - v_c2*v_dc2)/(1-v_c2dc2sw/v_c2sw/v_dc2sw);
4105 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);
4107 if(edv22<1e-100)
continue;
4108 edv22 = TMath::Sqrt(edv22);
4109 resvn2->SetBinContent(i,j,dv22);
4110 resvn2->SetBinError(i,j,edv22);
4112 double v_dc4sw = dc4->GetBinEntries(k);
4113 if(v_dc4sw<1)
continue;
4114 double v_dc4 = dc4->GetBinContent(i,j);
4115 double v_dc4sww = dc4sww->At(k);
4116 double e_dc4 = TMath::Sqrt(v_dc4sww)/v_dc4sw*dc4->GetBinError(i,j);
4117 double dcum4 = v_dc4 - 2*v_c2*v_dc2;
4118 double v_c2dc4 = c2dc4->GetBinContent(i,j);
4119 double v_c2dc4sw = c2dc4->GetBinEntries(k);
4120 if(TMath::AreEqualAbs(v_c2dc4sw/v_c2sw/v_dc4sw,1,1e-100))
continue;
4121 double covc2dc4 = v_c2dc4sw/v_c2sw/v_dc4sw*(v_c2dc4 - v_c2*v_dc4)/(1-v_c2dc4sw/v_c2sw/v_dc4sw);
4122 double v_dc2dc4 = dc2dc4->GetBinContent(i,j);
4123 double v_dc2dc4sw = dc2dc4->GetBinEntries(k);
4124 if(TMath::AreEqualAbs(v_dc2dc4sw/v_dc2sw/v_dc4sw,1,1e-100))
continue;
4125 double covdc2dc4 = v_dc2dc4sw/v_dc2sw/v_dc4sw*(v_dc2dc4 - v_dc2*v_dc4)/(1-v_dc2dc4sw/v_dc2sw/v_dc4sw);
4126 double edcum4= ( +4.0*v_dc2*v_dc2*e_c2*e_c2
4127 +4.0*v_c2*v_c2*e_dc2*e_dc2
4129 +8.0*v_c2*v_dc2*covc2dc2
4131 -4.0*v_c2*covdc2dc4 );
4132 if(edcum4<1e-100)
continue;
4133 edcum4 = TMath::Sqrt(edcum4);
4134 resDC4->SetBinContent(i,j, dcum4 );
4135 resDC4->SetBinError(i,j, edcum4 );
4137 if(cum4>1e-100)
continue;
4138 double dv24 = -dcum4/TMath::Power(-cum4,0.75);
4139 double dterm1 = 2*v_c2*v_c2*v_dc2 - 3*v_c2*v_dc4 + 2*v_c4*v_dc2;
4140 double dterm2 = 9.0/16.0*dcum4*dcum4;
4141 double dterm3 = 4.0*v_c2*v_c2*cum4*cum4;
4142 double dterm4 = cum4*cum4;
4143 double dterm5 = -3.0/2.0*dcum4*dterm1;
4144 double dterm6 = -4.0*v_c2*cum4*dterm1;
4145 double dterm7 = -2.0*cum4*dterm1;
4146 double dterm8 = 3.0*v_c2*cum4*dcum4;
4147 double dterm9 = 3.0/2.0*cum4*dcum4;
4148 double dterm10= 4*v_c2*cum4*cum4;
4149 double v_c4dc2 = c4dc2->GetBinContent(i,j);
4150 double v_c4dc2sw = c4dc2->GetBinEntries(k);
4151 if(TMath::AreEqualAbs(v_c4dc2sw/v_c4sw/v_dc2sw,1,1e-100))
continue;
4152 double covc4dc2 = v_c4dc2sw/v_c4sw/v_dc2sw*(v_c4dc2 - v_c4*v_dc2)/(1-v_c4dc2sw/v_c4sw/v_dc2sw);
4153 double v_c4dc4 = c4dc4->GetBinContent(i,j);
4154 double v_c4dc4sw = c4dc4->GetBinEntries(k);
4155 if(TMath::AreEqualAbs(v_c4dc4sw/v_c4sw/v_dc4sw,1,1e-100))
continue;
4156 double covc4dc4 = v_c4dc4sw/v_c4sw/v_dc4sw*(v_c4dc4 - v_c4*v_dc4)/(1-v_c4dc4sw/v_c4sw/v_dc4sw);
4157 double edv24= 1.0/TMath::Power(-cum4,3.5)*(+dterm1*dterm1*e_c2*e_c2
4166 -dterm10*covdc2dc4);
4167 if(edv24<1e-100)
continue;
4168 edv24 = TMath::Sqrt(edv24);
4169 resvn4->SetBinContent(i,j,dv24);
4170 resvn4->SetBinError(i,j,edv24);
4181 tList=
new TList(); tList->SetName(
"ToyVn"); tList->SetOwner();
AddDecayVn(tList);
fList->Add(tList);
4203 TF1 tf1_tpca(
"dphitpca", Form(
"1+2*%f*TMath::Cos(2*x)",v_tpca),0,TMath::TwoPi() );
4204 TF1 tf1_tpcc(
"dphitpcc", Form(
"1+2*%f*TMath::Cos(2*x)",v_tpcc),0,TMath::TwoPi() );
4205 TF1 tf1_vzea(
"dphivzea", Form(
"1+2*%f*TMath::Cos(2*x)",v_vzea),0,TMath::TwoPi() );
4206 TF1 tf1_vzec(
"dphivzec", Form(
"1+2*%f*TMath::Cos(2*x)",v_vzec),0,TMath::TwoPi() );
4207 TF1 tf1_decay(
"dphidecay", Form(
"1+2*%f*TMath::Cos(2*x)",v_decay),0,TMath::TwoPi() );
4208 TF1 tf1_bgr(
"dphibgr", Form(
"1+2*%f*TMath::Cos(2*x)",v_bgr),0,TMath::TwoPi() );
4215 for(
int m=0; m!=mtpc_a; ++m) {
4216 phi = tf1_tpca.GetRandom() +
fMCEP;
4217 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4227 for(
int m=0; m!=mtpc_c; ++m) {
4228 phi = tf1_tpcc.GetRandom() +
fMCEP;
4229 if(phi>TMath::TwoPi()) phi -= TMath::TwoPi();
4239 for(
int m=0; m!=mvze_a; ++m) {