36 #include "TRefArray.h" 39 #include <TInterpreter.h> 90 const
char*
AliESDEvent::fgkESDListName[kESDListN] = {
"AliESDRun",
119 "AliRawDataErrorLogs",
133 fESDObjects(new TList()),
150 fSPDPileupVertices(0),
151 fTrkPileupVertices(0),
156 fMuonGlobalTracks(0),
164 fEMCALCells(0), fPHOSCells(0),
170 fOldMuonStructure(kFALSE),
175 fTracksConnected(kFALSE),
179 fNTPCFriend2Store(0),
180 fDetectorStatus(0xFFFFFFFF),
181 fDAQDetectorPattern(0xFFFF),
182 fDAQAttributes(0xFFFF),
184 fNumberOfESDTracks(-1)
245 printf(
"copying ESD event...\n");
295 printf(
"operator = ESD\n");
296 if(&source ==
this)
return *
this;
315 while ((its = next())) {
316 name.Form(
"%s", its->GetName());
317 TObject *mine =
fESDObjects->FindObject(name.Data());
319 TClass* pClass=TClass::GetClass(its->ClassName());
321 AliWarning(Form(
"Can not find class description for entry %s (%s)\n",
322 its->ClassName(), name.Data()));
326 mine=(TObject*)pClass->New();
329 AliWarning(Form(
"%s:%d Could not find %s for copying \n",
330 (
char*)__FILE__,__LINE__,name.Data()));
333 if(mine->InheritsFrom(
"TNamed")){
334 ((TNamed*)mine)->SetName(name);
336 else if(mine->InheritsFrom(
"TCollection")){
337 if(mine->InheritsFrom(
"TClonesArray")) {
338 TClonesArray* tcits =
dynamic_cast<TClonesArray*
>(its);
340 dynamic_cast<TClonesArray*
>(mine)->SetClass(tcits->GetClass());
342 dynamic_cast<TCollection*
>(mine)->SetName(name);
344 AliDebug(1, Form(
"adding object %s of type %s", mine->GetName(), mine->ClassName()));
348 if(!its->InheritsFrom(
"TCollection")){
352 else if(its->InheritsFrom(
"TClonesArray")){
355 TClonesArray *itstca = (TClonesArray*)its;
356 TClonesArray *minetca = (TClonesArray*)mine;
361 minetca->ExpandCreate(itstca->GetEntriesFast());
362 for(
int i = 0;i < itstca->GetEntriesFast();++i){
364 TObject *minetcaobj = minetca->At(i);
365 TObject *itstcaobj = itstca->At(i);
369 itstcaobj->Copy(*minetcaobj);
373 AliWarning(Form(
"%s:%d cannot copy TCollection \n",
374 (
char*)__FILE__,__LINE__));
425 if(
this==&obj)
return;
459 if(pObject->InheritsFrom(TClonesArray::Class())){
460 ((TClonesArray*)pObject)->Delete();
462 else if(!pObject->InheritsFrom(TCollection::Class())){
463 TClass *pClass = TClass::GetClass(pObject->ClassName());
464 if (pClass && pClass->GetListOfMethods()->FindObject(
"Clear")) {
465 AliDebug(1, Form(
"Clear for object %s class %s", pObject->GetName(), pObject->ClassName()));
469 AliDebug(1, Form(
"ResetWithPlacementNew for object %s class %s", pObject->GetName(), pObject->ClassName()));
475 pObject->ClassName()));
487 Long_t dtoronly = TObject::GetDtorOnly();
488 TClass *pClass = TClass::GetClass(pObject->ClassName());
489 TObject::SetDtorOnly(pObject);
492 pClass->New(pObject);
494 TObject::SetDtorOnly((
void*)dtoronly);
593 TClonesArray &fv = *
fV0s;
594 Int_t idx=
fV0s->GetEntriesFast();
605 Int_t nclasses = classesArray.GetEntriesFast();
606 for(Int_t iclass=0; iclass < nclasses; iclass++ ) {
608 ULong64_t classMask=trclass->
GetMask();
610 if(trigMask & classMask){
612 if(detList.Contains(detector.Data())){
616 if(trigMaskNext50 & classMaskNext50){
618 if(detList.Contains(detector.Data())){
631 printf(
"ESD run information\n");
632 printf(
"Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld %lld Magnetic field %f \n",
642 printf(
"Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
646 printf(
"Mean vertex in RUN: X=%.4f Y=%.4f Z=%.4f cm\n",
649 printf(
"SPD Multiplicity. Number of tracklets %d \n",
651 printf(
"Number of pileup primary vertices reconstructed with SPD %d\n",
653 printf(
"Number of pileup primary vertices reconstructed using the tracks %d\n",
655 printf(
"Number of tracks: \n");
666 else printf(
" PHOSCells not in the Event\n");
668 else printf(
" EMCALCells not in the Event\n");
677 printf(
"HLT trigger decision: %s\n", pHLTDecision?pHLTDecision->GetOption():
"not available");
678 if (pHLTDecision) pHLTDecision->Print(
"compact");
697 for (Int_t i=0; i<ntrkF; i++) {
701 if (!esdt) {
AliFatalF(
"ESDfriendTrack %d points on non-existing ESDtrack %d",i,esdid);}
707 for (Int_t i=0; i<ntrkF; i++) {
709 if (!f) {
AliFatal(Form(
"NULL pointer for ESD track %d",i));}
722 if ((rm<0)||(rm>last))
return kFALSE;
729 int indK[3]={0,0,0},restK=0;
730 for (
int j=0;j<3;j++) {
733 if (TMath::Abs(ind)!=rm+1) indK[restK++] = ind;
740 if (rm==last)
return kTRUE;
749 for (
int j=0;j<3;j++) {
753 if (ind==lastI) indK[j] = rm+1;
754 else if (ind==-lastI) indK[j] = -(rm+1);
772 if ((rm<0)||(rm>last))
return kFALSE;
779 for (Int_t n=0; n<ncs; n++) {
785 TClonesArray &a=*
fV0s;
786 delete a.RemoveAt(rm);
791 delete a.RemoveAt(last);
808 if ((rm<0)||(rm>last))
return 0;
813 Bool_t lastUsePVTrc=kFALSE,lastUsePVTPC=kFALSE;
818 lastUsePVTPC = kTRUE;
825 lastUsePVTrc = kTRUE;
831 for (Int_t n=0; n<nv0; n++) {
835 if (rm==idx)
return 0;
836 if (idx==last) used++;
839 if (rm==idx)
return 0;
840 if (idx==last) used++;
843 for (Int_t n=0; n<ncs; n++) {
847 if (rm==idx)
return 0;
848 if (idx==last) used++;
852 if (rm==idx)
return 0;
853 if (idx==last) used++;
856 if (rm==idx)
return 0;
857 if (idx==last) used++;
861 for (Int_t n=0; n<ncl; n++) {
864 Int_t s=arr->GetSize();
866 Int_t idx=arr->At(s);
867 if (rm==idx)
return 0;
868 if (idx==last) used++;
890 if (!t) {
AliFatal(Form(
"NULL pointer for ESD track %d",last));}
900 delete a.RemoveAt(last);
905 for (
int iki=0;iki<3;iki++) {
912 if (!used)
return trfKeep;
917 if (used<1)
return trfKeep;
920 for (Int_t n=0; n<nv0; n++) {
922 for (
int ip=2;ip--;) {
925 if (--used<1)
return trfKeep;
929 for (Int_t n=0; n<ncs; n++) {
933 if (--used<1)
return trfKeep;
936 for (
int ip=2;ip--;) {
939 if (--used<1)
return trfKeep;
944 for (Int_t n=0; n<ncl; n++) {
947 Int_t s=arr->GetSize();
949 Int_t idx=arr->At(s);
952 if (--used<1)
return trfKeep;
965 int nv0Rem=0, nhypsel = v0HypSel ? v0HypSel->GetEntriesFast() : 0;
967 if (!cleanProngs && !nhypsel && etaMax>3)
return nv0Rem;
968 const double zeroArr[15] = {0.};
979 if (TMath::Abs(v0->
Eta())>etaMax) badV0 = 1;
981 Bool_t reject = kTRUE;
983 for (
int ih=nhypsel;ih--;) {
991 if (reject) badV0 = 2;
996 if ( TMath::Abs(v0->
Eta())>etaMax && !used) badV0 = 1;
1000 parP->
Set(parP->
GetX(),0.,zeroArr,zeroArr);
1001 parN->
Set(parN->
GetX(),0.,zeroArr,zeroArr);
1013 static TBits trackUsed, removeCand;
1016 trackUsed.ResetAllBits();
1017 removeCand.ResetAllBits();
1034 trackUsed.SetBitNumber(casc->
GetIndex());
1035 trackUsed.SetBitNumber(casc->
GetPindex());
1036 trackUsed.SetBitNumber(casc->
GetNindex());
1041 trackUsed.SetBitNumber(v0->
GetIndex(0));
1042 trackUsed.SetBitNumber(v0->
GetIndex(1));
1053 for (Int_t ic=0; ic<nec; ic++) {
1056 Int_t s = arr->GetSize();
1058 int tid = arr->At(s);
1059 if (!trackUsed.TestBitNumber(tid)) necMatch++;
1060 trackUsed.SetBitNumber(tid);
1071 if (trackUsed.TestBitNumber(itr))
continue;
1073 if ( (trc->
GetStatus() & flagsToKeep)!=0 )
continue;
1075 float impPar[2],impCov[3]={0.,0.,0.};
1077 if (impCov[2]<1e-9) {
1080 if (TMath::Abs(impPar[1])<dcaZCut)
continue;
1084 double xEst=0, xyzPHOS[3];
1087 TMath::Abs(xyzPHOS[2])<95. &&
1088 TMath::Abs(-1.3963-TMath::ATan2(xyzPHOS[1],xyzPHOS[0]))<7.854e-01) {
1092 removeCand.SetBitNumber(itr);
1097 if (!nRemCand)
return kFALSE;
1105 if (removeCand.TestBitNumber(indM) && removeCand.TestBitNumber(indD)) {
1109 removeCand.ResetBitNumber(indM);
1110 removeCand.ResetBitNumber(indD);
1115 if (removeCand.TestBitNumber(itr)) {
1119 tracks2destroy->Add(remTr);
1205 Char_t n=Char_t(ftr.GetEntriesFast());
1216 Char_t n=Char_t(ftr.GetEntriesFast());
1231 return track->
GetID();
1256 Bool_t reset = kTRUE;
1257 Bool_t containTrackerData = kFALSE;
1258 for (Int_t i = 0; i <
fMuonTracks->GetEntriesFast(); i++) {
1279 if (!containTrackerData) {
1366 for (Int_t i = 0; i <
fMuonClusters->GetEntriesFast(); i++) {
1368 if (cluster->GetUniqueID() == clusterId)
return cluster;
1405 for (Int_t i = 0; i <
fMuonPads->GetEntriesFast(); i++) {
1407 if (pad->GetUniqueID() == padId)
return pad;
1456 TClonesArray &fk = *
fKinks;
1459 return fKinks->GetEntriesFast()-1;
1550 AliWarning(
"No primary vertex available. Returning the \"default\"...");
1562 AliWarning(
"No primary vertex from tracks available.");
1566 AliWarning(
"No primary vertex from tracks available.");
1573 Float_t diamondcov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,7.};
1649 for (Int_t i=0; i<ntrk; i++) {
1651 if (!t) {
AliFatal(Form(
"NULL pointer for ESD track %d",i));}
1727 if(fObj->InheritsFrom(
"TNamed")){
1730 else if(fObj->InheritsFrom(
"TClonesArray")){
1753 AliInfoF(
"StdContent has %d entries, will not create new ones",
fESDObjects->GetEntries());
1768 AddObject(
new TClonesArray(
"AliESDVertex",0));
1769 AddObject(
new TClonesArray(
"AliESDVertex",0));
1770 AddObject(
new TClonesArray(
"AliESDtrack",0));
1771 AddObject(
new TClonesArray(
"AliESDMuonTrack",0));
1772 AddObject(
new TClonesArray(
"AliESDMuonCluster",0));
1773 AddObject(
new TClonesArray(
"AliESDMuonPad",0));
1774 AddObject(
new TClonesArray(
"AliESDMuonGlobalTrack",0));
1775 AddObject(
new TClonesArray(
"AliESDPmdTrack",0));
1777 AddObject(
new TClonesArray(
"AliESDTrdTrack",0));
1778 AddObject(
new TClonesArray(
"AliESDTrdTracklet",0));
1779 AddObject(
new TClonesArray(
"AliESDv0",0));
1780 AddObject(
new TClonesArray(
"AliESDcascade",0));
1781 AddObject(
new TClonesArray(
"AliESDkink",0));
1782 AddObject(
new TClonesArray(
"AliESDCaloCluster",0));
1785 AddObject(
new TClonesArray(
"AliRawDataErrorLog",0));
1789 AddObject(
new TClonesArray(
"AliESDCosmicTrack",0));
1790 AddObject(
new TClonesArray(
"AliESDTOFCluster",0));
1791 AddObject(
new TClonesArray(
"AliESDTOFHit",0));
1792 AddObject(
new TClonesArray(
"AliESDTOFMatch",0));
1810 TClonesArray* cosmics =
new TClonesArray(
"AliESDCosmicTrack",0);
1816 TClonesArray* muonClusters =
new TClonesArray(
"AliESDMuonCluster",0);
1822 TClonesArray* muonPads =
new TClonesArray(
"AliESDMuonPad",0);
1853 AliDebug(1,Form(
"IsPHOS cluster %d Size: %d \n",i,clusters->GetEntriesFast()));
1857 return clusters->GetEntriesFast();
1873 AliDebug(1,Form(
"IsEMCAL cluster %d Size: %d \n",i,clusters->GetEntriesFast()));
1877 return clusters->GetEntriesFast();
1889 const Int_t kSplitlevel = 99;
1890 const Int_t kBufsize = 32000;
1893 while ((obj = next())) {
1894 branchname.Form(
"%s", obj->GetName());
1895 if(branchname.CompareTo(
"AliESDfriend")==0)branchname =
"ESDfriend.";
1896 if ((kSplitlevel > 1) && !obj->InheritsFrom(TClonesArray::Class())) {
1897 if(!branchname.EndsWith(
"."))branchname +=
".";
1899 if (!tree->FindBranch(branchname)) {
1902 Int_t splitLevel = (TString(obj->ClassName()) ==
"AliHLTGlobalTriggerDecision") ? -1 : kSplitlevel - 1;
1903 tree->Bronch(branchname, obj->ClassName(),
fESDObjects->GetObjectRef(obj),kBufsize, splitLevel);
1907 tree->Branch(
"fDetectorStatus",(
void*)&
fDetectorStatus,
"fDetectorStatus/l");
1909 tree->Branch(
"fDAQAttributes",(
void*)&
fDAQAttributes,
"fDAQAttributes/i");
1910 tree->Branch(
"fNTPCClusters",(
void*)&
fNTPCClusters,
"fNTPCClusters/I");
1911 tree->Branch(
"fNumberOfESDTracks",(
void*)&
fNumberOfESDTracks,
"fNumberOfESDTracks/I");
1920 AliWarning(
"AliESDEvent::ReadFromTree() Zero Pointer to Tree \n");
1924 if(!tree->GetTree())tree->LoadTree(0);
1927 if(tree->GetBranch(
"ESD")) {
1929 char ** address = (
char **)(tree->GetBranch(
"ESD")->GetAddress());
1931 TBranch * esdFB = tree->GetBranch(
"ESDfriend.");
1932 char ** addressF = 0;
1933 if(esdFB)addressF = (
char **)(esdFB->GetAddress());
1935 AliInfo(
"AliESDEvent::ReadFromTree() Reading old Tree");
1936 tree->SetBranchAddress(
"ESD", &
fESDOld);
1941 AliInfo(
"AliESDEvent::ReadFromTree() Reading old Tree");
1942 AliInfo(
"Branch already connected. Using existing branch address.");
1951 TList* connectedList = (TList*) (tree->GetUserInfo()->FindObject(
"ESDObjectsConnectedToTree"));
1968 newf = (TObject*)*addressF;
1970 if(newf!=0&&oldf!=newf){
1989 fESDObjects->SetName(
"ESDObjectsConnectedToTree");
2000 esdEvent = (
AliESDEvent*)tree->GetTree()->GetUserInfo()->FindObject(
"AliESDEvent");
2004 TList* connectedList = (TList*) (tree->GetUserInfo()->FindObject(
"ESDObjectsConnectedToTree"));
2007 if (connectedList && (strcmp(opt,
"reconnect"))) {
2015 if (tree->GetBranch(
"fNumberOfESDTracks")) tree->SetBranchAddress(
"fNumberOfESDTracks",&
fNumberOfESDTracks);
2043 AliWarning(Form(
"AliESDEvent::ReadFromTree() TList contains less than the standard contents %d < %d \n",
2050 while((el=(TNamed*)next())){
2051 TString bname(el->GetName());
2052 if(bname.CompareTo(
"AliESDfriend")==0)
2055 TBranch *br = tree->GetBranch(
"ESDfriend.");
2056 if (br) tree->SetBranchAddress(
"ESDfriend.",
fESDObjects->GetObjectRef(el));
2060 TBranch *br = tree->GetBranch(bname.Data());
2062 tree->SetBranchAddress(bname.Data(),
fESDObjects->GetObjectRef(el));
2065 br = tree->GetBranch(Form(
"%s.",bname.Data()));
2067 tree->SetBranchAddress(Form(
"%s.",bname.Data()),
fESDObjects->GetObjectRef(el));
2070 AliWarning(Form(
"AliESDEvent::ReadFromTree() No Branch found with Name %s or %s.",bname.Data(),bname.Data()));
2083 if (tree->GetBranch(
"fNumberOfESDTracks")) tree->SetBranchAddress(
"fNumberOfESDTracks",&
fNumberOfESDTracks);
2088 fESDObjects->SetName(
"ESDObjectsConnectedToTree");
2093 tree->GetUserInfo()->SetOwner(kFALSE);
2103 while((el=(TNamed*)next())){
2104 TString bname(el->GetName());
2105 TBranch *br = tree->GetBranch(bname.Data());
2107 tree->SetBranchAddress(bname.Data(),
fESDObjects->GetObjectRef(el));
2110 br = tree->GetBranch(Form(
"%s.",bname.Data()));
2112 tree->SetBranchAddress(Form(
"%s.",bname.Data()),
fESDObjects->GetObjectRef(el));
2123 if (tree->GetBranch(
"fNumberOfESDTracks")) tree->SetBranchAddress(
"fNumberOfESDTracks",&
fNumberOfESDTracks);
2237 TString expr(trigExpr);
2238 if (expr.IsNull())
return kTRUE;
2242 if (mask & (1ull << itrig)) {
2243 expr.ReplaceAll(
GetESDRun()->GetTriggerClass(itrig),
"1");
2246 expr.ReplaceAll(
GetESDRun()->GetTriggerClass(itrig),
"0");
2251 if (maskNext50 & (1ull << itrig)) {
2252 expr.ReplaceAll(
GetESDRun()->GetTriggerClass(itrig+50),
"1");
2255 expr.ReplaceAll(
GetESDRun()->GetTriggerClass(itrig+50),
"0");
2260 if ((
gROOT->ProcessLineFast(expr.Data(),&error) == 0) &&
2261 (error == TInterpreter::kNoError)) {
2283 TString description;
2286 description=pDecision->GetTitle();
2297 if (!pDecision)
return kFALSE;
2299 Option_t* option=pDecision->GetOption();
2300 if (option==NULL || *option!=
'1')
return kFALSE;
2304 Int_t index=description.Index(name);
2305 if (index<0)
return kFALSE;
2306 index+=strlen(name);
2307 if (index>=description.Length())
return kFALSE;
2308 if (description[index]!=0 && description[index]!=
' ')
return kFALSE;
2316 Double_t nSigmaZdist,
2317 Double_t nSigmaDiamXY,
2318 Double_t nSigmaDiamZ)
const{
2324 if(nc1<1)
return kFALSE;
2326 if(nPileVert==0)
return kFALSE;
2328 for(Int_t i=0; i<nPileVert;i++){
2331 if(nc2>=minContributors){
2333 Double_t z2=pv->
GetZ();
2334 Double_t distZ=TMath::Abs(z2-z1);
2338 if(distZ>minZdist && distZdiam<cutZdiam){
2339 Double_t x2=pv->
GetX();
2340 Double_t y2=pv->
GetY();
2343 Double_t cov1[6],cov2[6];
2348 Double_t errzDist=TMath::Sqrt(cov1[5]+cov2[5]);
2349 Double_t cutXdiam=nSigmaDiamXY*errxDist;
2351 Double_t cutYdiam=nSigmaDiamXY*erryDist;
2353 if( (distXdiam<cutXdiam) && (distYdiam<cutYdiam) && (distZ>nSigmaZdist*errzDist) ){
2373 AliWarning(
"This obsolete method will be eliminated soon. Use AliESDtrackCuts::GetReferenceMultiplicity");
2375 tracklets = trITSSApure = trITSTPC = 0;
2379 for (
int itr=ntr;itr--;) {
2388 for (
int itr=ntr;itr--;) {
2390 if (!t) {
AliFatal(Form(
"NULL pointer for ESD track %d",itr));}
2391 if (TMath::Abs(t->
Eta())>eta)
continue;
2453 Float_t factorSum = 0;
2454 for(Int_t j = 8*ring; j < (8*ring+8); ++j) {
2467 AliError(
"fESDTOFClusters is not initialized");
2472 Int_t goodhit[20000];
2474 for(Int_t i=0;i < 20000;i++){
2479 for(Int_t i=0;i < ntofclusters;i++){
2481 if(cluster[i].GetNMatchableTracks() || !mapping){
2500 AliInfo(Form(
"TOF cluster before of matching = %i , after = %i\n",ntofclusters,
fESDTOFClusters->GetEntriesFast()));
2501 Int_t hitnewpos[20000]={0};
2512 delete a.RemoveAt(i);
2515 for(Int_t k=nhitBefore-1;k>i;k--){
2517 delete a.RemoveAt(k);
2518 if(k-i==1)
delete a.RemoveAt(i);
2522 delete a.RemoveAt(i);
2524 delete a.RemoveAt(k);
2541 AliInfo(Form(
"TOF hit before of matching = %i , after = %i\n",nhitOriginal,
fESDTOFHits->GetEntriesFast()));
2552 Int_t goodhit[20000];
2554 for(Int_t i=0;i < 20000;i++){
2559 for(Int_t i=0;i < ntofclusters;i++){
2561 if(cluster[i]->GetNMatchableTracks() || !mapping){
2580 AliInfo(Form(
"TOF cluster before of matching = %i , after = %i\n",ntofclusters,
fESDTOFClusters->GetEntriesFast()));
2581 Int_t hitnewpos[20000]={0};
2592 delete a.RemoveAt(i);
2595 for(Int_t k=nhitBefore-1;k>i;k--){
2597 delete a.RemoveAt(k);
2598 if(k-i==1)
delete a.RemoveAt(i);
2602 delete a.RemoveAt(i);
2604 delete a.RemoveAt(k);
2621 AliInfo(Form(
"TOF hit before of matching = %i , after = %i\n",nhitOriginal,
fESDTOFHits->GetEntriesFast()));
2673 AliWarningF(
"The triggered orbit is too much ahead (%lld) of 1st scaler, fall back to GetTimeStamp",span);
2677 tCTP += (span*3564*25/1000 + ctp0->
GetMicroSecs())/1000000;
2686 const double kBCLHC = 1./40.079;
2692 AliWarningF(
"The triggered orbit is too much ahead (%lld) of 1st scaler, fall back to GetTimeStamp",span);
2708 const double kBCLHC = 1./40.079;
2712 Bool_t fail = kFALSE;
2714 AliWarning(
"CTP start not available, building from GetTimeStamp()");
2719 AliWarningF(
"The triggered orbit is too much ahead (%lld) of 1st scaler, fall back to GetTimeStamp",span);
2729 sec += span/1000000;
2730 msec = span%1000000;
2733 evSt.SetUniqueID(fail);
2750 if (!mcTruth)
return;
2751 if (mcTruth->IsA()!=AliMCEvent::Class()) {
2752 AliFatalF(
"Argument of type %s is expected, %s supplied",
2753 "AliMCEvent",mcTruth->IsA()->GetName());
2756 if (!mcEvent->HasSubsidiaries())
return;
2763 lbfix = mcEvent->Raw2MergedLabel(lbraw<0 ? -lbraw:lbraw);
2764 trc->
SetLabel(lbraw<0 ? -lbfix:lbfix);
2768 lbfix = mcEvent->Raw2MergedLabel(lbraw<0 ? -lbraw:lbraw);
2774 lbfix = mcEvent->Raw2MergedLabel(lbraw<0 ? -lbraw:lbraw);
2780 lbfix = mcEvent->Raw2MergedLabel(lbraw<0 ? -lbraw:lbraw);
2786 for (
int ih=
fESDTOFHits->GetEntriesFast();ih--;) {
2788 int lbtof[3] = {-1,-1,-1};
2789 for (
int i=0;i<3;i++) {
2791 lbtof[i] = mcEvent->Raw2MergedLabel(lbtof[i]);
2799 lbfix = mcEvent->Raw2MergedLabel(lbraw<0 ? -lbraw:lbraw);
2800 trc->
SetLabel(lbraw<0 ? -lbfix:lbfix);
2807 lbfix = mcEvent->Raw2MergedLabel(lbraw<0 ? -lbraw:lbraw);
2808 trc->
SetLabel(lbraw<0 ? -lbfix:lbfix);
2814 if (!lbArr)
continue;
2816 for (
int i=nlb;i--;) {
2817 lbArr[i] = mcEvent->Raw2MergedLabel(lbArr[i]);
2824 for (
int i=ncells;i--;) {
2826 if (lbraw<-1)
continue;
2833 for (
int i=ncells;i--;) {
2835 if (lbraw<-1)
continue;
2842 for (
int i=3;i--;) {
2844 if (lbraw<0)
continue;
2845 trdTklet->
SetLabel(i,mcEvent->Raw2MergedLabel(lbraw));
2852 if (lbraw<0)
continue;
2853 trdTrk->
SetLabel(mcEvent->Raw2MergedLabel(lbraw));
2859 if (lbraw<0)
continue;
2871 const double par0[5]={0.}, cov0[15]={0.};
2872 for (Int_t n=0; n<nv0; n++) {
2877 parP->
Set(parP->
GetX(),0.,par0,cov0);
2878 parN->
Set(parP->
GetX(),0.,par0,cov0);
2888 for (Int_t n=0; n<nv0; n++) {
2895 double xP = parP->
GetX(), xN = parN->
GetX();
2903 if (!parN->PropagateTo(xN,bZ)) {
void EmptyOfflineV0Prongs()
Container for HLT decision within the ESD.
Bool_t fOldMuonStructure
Raw-data reading error messages.
ULong64_t GetBunchCross() const
Float_t GetZDCN2Energy() const
const TObjArray * GetV0HypSelArray() const
void Print(Option_t *option="") const
AliESDtrack * GetTrack(Int_t i) const
virtual Double_t Pt() const
Class to describe the MUON pads in the Event Summary Data.
Double_t GetSigma2DiamondZ() const
void SetHitIndex(Int_t i, Int_t index)
void SetTrdTrigger(const AliESDTrdTrigger *t)
static Bool_t ResetWithPlacementNew(TObject *pObject)
const Float_t * GetVZEROEqFactors() const
AliESDCaloCluster * GetCaloCluster(Int_t i) const
Int_t GetHitIndex(Int_t i) const
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
Bool_t GetUsedByCascade() const
void SetMagneticField(Double_t mf)
Bool_t fConnected
Old friend esd Structure.
void SetTPCLabel(int lbl)
TObject * GetHLTTriggerDecision() const
Int_t GetNumberOfV0s() const
TClonesArray * fMuonGlobalTracks
MUON ESD pads.
AliESDfriendTrack * RemoveTrack(Int_t i, Bool_t checkPrimVtx)
void Print(Option_t *option="") const
const AliMultiplicity * GetMultiplicity() const
AliESDTrdTracklet * GetTrdTracklet(Int_t idx) const
Double_t GetMagneticField() const
Double_t GetSigma2DiamondY() const
UInt_t GetMicroSecs() const
virtual Bool_t SubstituteTrack(Int_t indexOld, Int_t indexNew)
Int_t GetNumberOfTracks() const
void SetLabel(Int_t label)
AliESDPmdTrack * GetPmdTrack(Int_t i) const
Double_t GetSigmaZ2() const
AliESDkink * GetKink(Int_t i) const
AliESDTrdTrigger * fTrdTrigger
AD ESD object caontaining bit pattern.
Int_t GetNumberOfTrdTracks() const
UInt_t GetSeconds() const
Double_t GetDiamondY() const
Int_t GetITSLabel() const
Int_t GetTRDLabel() const
AliESDCosmicTrack * GetCosmicTrack(Int_t i) const
virtual UShort_t * GetIndices() const
AliESDCaloCluster * GetCaloCluster(Int_t i) const
AliESDMuonTrack * GetMuonTrack(Int_t i)
void SetT0zVertex(Double32_t z)
UInt_t GetOrbitNumber() const
TClonesArray * fESDTOFClusters
Tracks created by cosmics finder.
AliESDTZERO * fESDTZERO
VZERO object containing rough multiplicity.
AliESDMuonTrack * NewMuonTrack()
AliESDFMD * fESDFMD
ZDC information.
void AddObject(TObject *obj)
void AddRawDataErrorLog(const AliRawDataErrorLog *log) const
Double_t GetEta(Int_t i) const
const AliExternalTrackParam * GetOuterParam() const
virtual void Copy(TObject &obj) const
Float_t GetZDCP2Energy() const
void Set(T x, T alpha, const T param[5], const T covar[15])
virtual Float_t GetMultiplicity(Int_t i) const
Int_t GetNumberOfPileupVerticesSPD() const
Class to describe the MUON tracks in the Event Summary Data class.
virtual Double_t GetY() const
#define AliFatalF(message,...)
void SetNumberOfESDTracks(int ntr)
void SetPrimaryVertexTracks(const AliESDVertex *vertex)
void SetTOFcluster(Int_t ntofclusters, AliESDTOFCluster *cluster, Int_t *mapping=NULL)
const AliESDVertex * GetPrimaryVertex() const
TArrayI * GetTracksMatched() const
AliESDcascade * GetCascade(Int_t i) const
Bool_t FreeClustersTracklet(Int_t i, Int_t mode) const
AliESDVertex * fSPDVertex
Primary vertex estimated by the TPC.
float GetMassMargin(float pT) const
Bool_t GetOnFlyStatus() const
void SetFriendTrackID(int id)
const TObjArray & GetClasses() const
void EstimateMultiplicity(Int_t &tracklets, Int_t &trITSTPC, Int_t &trITSSApure, Double_t eta=1., Bool_t useDCAFlag=kTRUE, Bool_t useV0Flag=kTRUE) const
AliEventplane * fEventplane
Centrality for AA collision.
Double_t GetTimeStampCTPBCCorr() const
void SetTimeStamp(UInt_t timeStamp)
TClonesArray * fSPDPileupVertices
TRD trigger information.
AliCentrality * fCentrality
event times (and sigmas) as estimated by TOF
AliESDTrdTrack * GetTrdTrack(Int_t i) const
Int_t GetNumberOfMuonTracks() const
void AddPmdTrack(const AliESDPmdTrack *t)
void SetPrimaryVertexTPC(const AliESDVertex *vertex)
Int_t GetESDUpperTrackIndex() const
void SetESDIndicesStored(Bool_t v)
Int_t AddKink(const AliESDkink *c)
virtual void SetTOFLabel(const Int_t label[3])
void ReleaseESDfriendTrack()
Int_t GetNTOFhits() const
void SetLabel(Int_t label)
Int_t GetNumberOfPileupVerticesTracks() const
UShort_t GetBunchCrossNumber() const
Bool_t fUseOwnList
flag if leaves are alreday connected
void SetFriendTrack(const AliESDfriendTrack *t)
Int_t GetIndex(Int_t i) const
AliESDcascade * GetCascade(Int_t i) const
ULong64_t GetTriggerMaskNext50() const
virtual AliESDfriend * FindFriend() const
Char_t AddPileupVertexTracks(const AliESDVertex *vtx)
AliESDPmdTrack * GetPmdTrack(Int_t i) const
TClonesArray * fTrdTracklets
TRD ESD tracks (triggered)
void SetVZEROfriend(const AliESDVZEROfriend *obj)
ULong64_t GetTriggerMask() const
Int_t AddCaloCluster(const AliESDCaloCluster *c)
#define AliInfoF(message,...)
Int_t GetEventNumberInFile() const
virtual Double_t GetTgl() const
ULong_t GetFlagsNotToClean() const
ULong64_t GetMask() const
Double_t GetDiamondX() const
static void AccountBField(float b)
AliESDHeader * fHeader
Run information tmp put in the Userdata.
virtual ~AliMultiplicity()
void AddMuonGlobalTrack(const AliESDMuonGlobalTrack *t)
Bool_t ContainTrackerData() const
Float_t GetZDCN1Energy() const
UInt_t GetTimeStamp() const
AliESDVertex * PrimaryVertexTracksUnconstrained() const
void SetLabel(Int_t label[])
AliMultiplicity * fSPDMult
Primary vertex estimated using ESD tracks.
Int_t GetNumberOfMuonPads()
virtual Int_t GetNIndices() const
#define AliWarning(message)
Double_t GetSigma2DiamondX() const
AliTOFHeader * fTOFHeader
void SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t em1Energy, Float_t em2Energy, Float_t n2Energy, Float_t p2Energy, Int_t participants, Int_t nPartA, Int_t nPartC, Double_t b, Double_t bA, Double_t bC, UInt_t recoflag)
AliESD * fESDOld
Flag if reading ESD with old MUON structure.
AliESDCaloTrigger * fPHOSTrigger
SPD tracklet multiplicity.
Int_t GetKinkIndex(Int_t i) const
Float_t GetZDCEMEnergy() const
Int_t GetClusterTrackNo() const
const char * GetDetectorsInCluster() const
const AliExternalTrackParam * GetParamP() const
AliESDfriend * fESDFriendOld
Old esd Structure.
TClonesArray * fMuonClusters
MUON ESD tracks.
void SetFriendNotStored(Bool_t v)
UInt_t GetTimeStamp() const
Bool_t IsHLTTriggerFired(const char *name=NULL) const
virtual Float_t GetVZEROEqMultiplicity(Int_t i) const
Char_t AddPileupVertexSPD(const AliESDVertex *vtx)
AliESDVertex * RemoveConstraintFromVertex(AliESDVertex *inVtx, Float_t *diamondxyz, Float_t *diamondcov) const
UInt_t GetEventType() const
void AdjustMCLabels(const AliVEvent *mctruth)
TClonesArray * fMuonPads
MUON ESD clusters.
AliESDv0 * GetV0(Int_t i) const
AliESDMuonPad * FindMuonPad(UInt_t padId)
UChar_t GetTRDntracklets() const
Int_t GetESDtrackID() const
Bool_t IsOn(ULong64_t mask) const
Bool_t GetXatLabR(Double_t r, Double_t &x, Double_t bz, Int_t dir=0) const
void SetADData(AliESDAD *obj)
ULong64_t GetTriggerMask() const
void RestoreOfflineV0Prongs()
void SetRunNumber(Int_t n)
void SetESDEvent(AliESDEvent *evt)
void SetIndex(Int_t index, Int_t pos)
void SetLabel(Int_t label)
Set the corresponding MC track number.
TClonesArray * fCascades
V0 vertices.
AliESDMuonTrack * GetMuonTrack(Int_t i) const
Int_t GetNumberOfMuonTracks() const
Double_t GetSigmaY2() const
const AliESDVertex * GetVertex() const
void SetMCLabel(Short_t pos, Int_t val)
const AliESDVertex * GetPileupVertexSPD(Int_t i) const
AliESDtrack * NewTrack()
add new track at the end of tracks array and return instance
Int_t GetNumberOfCaloClusters() const
void SetLabel(Int_t label)
Int_t GetRunNumber() const
AliEventplane * GetEventplane()
Container with calorimeter trigger information in the ESD event.
Int_t GetNumberOfTracks() const
void WriteToTree(TTree *tree) const
Class to describe the MUON clusters in the Event Summary Data.
Bool_t GetCleanOfflineV0Prongs() const
void SetPrimaryVertexSPD(const AliESDVertex *vertex)
Int_t GetNumberOfCosmicTracks() const
Int_t GetNumberOfPmdTracks() const
AliESDMuonCluster * FindMuonCluster(UInt_t clusterId)
Int_t GetEMCALClusters(TRefArray *clusters) const
void SetPeriodNumber(UInt_t n)
TClonesArray * fKinks
Cascade vertices.
virtual Double_t GetZ() const
Double_t GetCleanDCAZCut() const
UInt_t fDAQDetectorPattern
Int_t GetNumberOfTrdTracklets() const
AliMultiplicity * GetMultiplicity() const
int CleanV0s(const AliGRPRecoParam *grpRecoParam)
Int_t GetZDCParticipants() const
TClonesArray * fCaloClusters
Kinks.
ULong64_t GetStatus() const
Int_t GetNumberOfMuonClusters()
void SetZDCData(const AliESDZDC *obj)
UInt_t GetNLabels() const
void SetBunchCrossNumber(UShort_t n)
Int_t * GetLabels() const
void AddCosmicTrack(const AliESDCosmicTrack *t)
AliESDkink * GetKink(Int_t i) const
void SetT0(Double32_t timeStart)
TObject * FindListObject(const char *name) const
Int_t AddV0(const AliESDv0 *v)
AliESDVZERO * fESDVZERO
FMD object containing rough multiplicity.
Event Summary Data for the Forward Multiplicity Detector.This stores the psuedo-multiplicity and -rap...
AliESDCaloCells * fPHOSCells
EMCAL cell info.
AliVEvent & operator=(const AliVEvent &vEvnt)
void SetITSLabel(Int_t label)
void AddCascade(const AliESDcascade *c)
Int_t GetNumberOfTrdTracks() const
Int_t GetRunNumber() const
Float_t GetZDCP1Energy() const
Int_t GetNumberOfMuonGlobalTracks() const
AliESDMuonPad * GetMuonPad(Int_t i)
void SetMultiplicity(const AliMultiplicity *mul)
AliESDTrdTrack * GetTrdTrack(Int_t i) const
const AliTimeStamp * GetCTPStart() const
Double32_t GetT0zVertex() const
#define AliWarningF(message,...)
Calorimeter cluster data container.
void SetESDtrackID(int i)
#define AliFatal(message)
virtual Double_t GetX() const
UInt_t GetOrbitNumber() const
AliESDEvent & operator=(const AliESDEvent &source)
TClonesArray * fESDTOFHits
TOF clusters.
AliCentrality * GetCentrality()
AliESDVZEROfriend * GetVZEROfriend()
AliESDMuonCluster * NewMuonCluster()
AliESDMuonGlobalTrack * GetMuonGlobalTrack(Int_t i)
void SetTOFHeader(const AliTOFHeader *tofEventTime)
void SetIndex(Int_t i, Int_t ind)
Int_t GetLabel() const
Return the corresponding MC track number.
AliESDCaloTrigger * fEMCALTrigger
PHOS Trigger information.
AliESDMuonGlobalTrack * NewMuonGlobalTrack()
void SuppressTOFMatches()
void SetESDfriend(const AliESDfriend *f) const
void Clear(Option_t *option="")
Int_t GetNumberOfKinks() const
Double_t GetEffMassExplicit(Double_t m1, Double_t m2) const
Int_t GetNumberOfV0s() const
AliTriggerCluster * GetCluster() const
AliESDFIT * fESDFIT
TZEROObject.
Int_t fNTPCFriend2Store
Event plane for AA collision.
TClonesArray * fTrdTracks
PMD ESD tracks.
#define AliDebug(logLevel, message)
void SetESDEvent(const AliESDEvent *evt)
void AddMuonTrack(const AliESDMuonTrack *t)
TClonesArray * fTrkPileupVertices
Pileup primary vertices reconstructed by SPD.
AliTimeStamp GetAliTimeStamp() const
void ReadFromTree(TTree *tree, Option_t *opt="")
void GetDiamondCovXY(Float_t cov[3]) const
void SetFMDData(AliESDFMD *obj)
AliESDv0 * GetV0(Int_t i) const
static const char * fgkESDListName[kESDListN]
flag if tracks have already pointer to event set
virtual Double_t Eta() const
virtual Int_t GetNContributors() const
AliESDVertex * fPrimaryVertex
Primary vertex estimated by the SPD.
ULong64_t GetMaskNext50() const
Int_t GetNumberOfCascades() const
virtual void SetEvent(const AliVEvent *ev)
virtual void GetImpactParameters(Float_t &xy, Float_t &z) const
Bool_t IsDetectorInTriggerCluster(TString detector, AliTriggerConfiguration *trigConf) const
const AliESDVertex * GetPrimaryVertex() const
void SetESDEvent(AliESDEvent *evt)
void CompleteStdContent()
Short_t GetNumberOfCells() const
Int_t GetMCLabel(Short_t pos) const
Int_t GetIndex(Int_t i) const
void SetTZEROData(const AliESDTZERO *obj)
void SetTRDLabel(int lbl)
AliESDfriendTrack * AddTrack(const AliESDfriendTrack *t, Bool_t shallow=kFALSE)
virtual Int_t GetTOFLabel(Int_t i) const
Int_t GetNumberOfTracks() const
UInt_t GetPeriodNumber() const
AliESDtrack * GetTrack(Int_t i) const
const AliESDRun * GetESDRun() const
const AliESDfriendTrack * GetFriendTrack() const
AliESDVZERO * GetVZEROData()
Bool_t RemoveV0(Int_t i) const
AliESDMuonPad * NewMuonPad()
TClonesArray * fV0s
TRD tracklets (for trigger)
void GetESDfriend(AliESDfriend *f)
void SetVZEROData(const AliESDVZERO *obj)
TClonesArray * fMuonTracks
ESD tracks.
void AddTrdTrack(const AliESDTrdTrack *t)
void AddTrdTracklet(const AliESDTrdTracklet *trkl)
UInt_t GetPeriodNumber() const
AliESDMuonCluster * GetMuonCluster(Int_t i)
Int_t GetEventNumberInFile() const
Int_t GetNumberOfCaloClusters() const
virtual Bool_t GetStatus() const
#define AliError(message)
void SetKinkIndexes(Int_t points[3])
void SetClusterTrackNo(Int_t trno)
UChar_t GetTriggerCluster() const
virtual Bool_t IsPileupFromSPD(Int_t minContributors=5, Double_t minZdist=0.8, Double_t nSigmaZdist=3., Double_t nSigmaDiamXY=2., Double_t nSigmaDiamZ=5.) const
void SetOrbitNumber(UInt_t n)
AliESDfriendTrack * GetTrack(Int_t i) const
virtual Bool_t UsesTrack(Int_t index) const
Int_t GetTPCLabel() const
Bool_t fTracksConnected
Do not use the list from the esdTree but use the one created by this class.
TClonesArray * fCosmicTracks
PHOS cell info.
AliESDVertex * fTPCVertex
FITObject.
Bool_t PropagateTo(Double_t p[3], Double_t covyz[3], Double_t covxyz[3], Double_t b)
Class for calorimeter cell ESD data handling.
Int_t GetESDLowerTrackIndex() const
Int_t GetNumberOfPmdTracks() const
AliESDZDC * fESDZDC
ESD Event Header.
Bool_t GetESDIndicesStored() const
Double_t GetDiamondZ() const
UInt_t GetTimeStampCTP() const
TString GetHLTTriggerDescription() const
TClonesArray * fTracks
Pileup primary vertices reconstructed using the tracks.
void SetFriendTrackPointer(AliESDfriendTrack *t)
void SetEventNumberInFile(Int_t n)
AliESDACORDE * fESDACORDE
PHOS Trigger information.
Bool_t RemoveKink(Int_t i) const
Int_t GetNumberOfKinks() const
TClonesArray * fErrorLogs
TOF matching info (with the reference to tracks)
#define AliErrorF(message,...)
virtual Bool_t IsPileupFromSPDInMultBins() const
void GetCovarianceMatrix(Double_t covmatrix[6]) const
TClonesArray * fESDTOFMatches
TOF hits (used for clusters)
Int_t GetNumberOfCascades() const
virtual AliVEvent::EDataLayoutType GetDataLayoutType() const
TClonesArray * fPmdTracks
MUON+MFT ESD tracks // AU.
Bool_t Clean(TObjArray *track2destroy, const AliGRPRecoParam *grpRecoParam)
AliESDAD * fESDAD
ACORDE ESD object caontaining bit pattern.
Bool_t IsEventSelected(const char *trigExpr) const
void SetTriggerMask(ULong64_t n)
AliESDCaloCells * fEMCALCells
Calorimeter clusters for PHOS/EMCAL.
void SetEventType(UInt_t eventType)
void SetTriggerCluster(UChar_t n)
Double_t GetVertexerV0EtaMax() const
const AliExternalTrackParam * GetParamN() const
Bool_t GetXYZAt(Double_t x, Double_t b, Double_t r[3]) const
void SetFITData(const AliESDFIT *obj)
Bool_t GetFriendNotStored() const
Int_t GetNumberOfTPCTracks() const
Float_t GetMagneticField() const
void SetACORDEData(AliESDACORDE *obj)
void MoveClustersToESD(AliESDEvent &esd)
virtual Int_t GetNumberOfTracklets() const
Int_t AddTrack(const AliESDtrack *t)
UShort_t GetBunchCrossNumber() const
ULong64_t fDetectorStatus
number of TPC friend tracks to store
Int_t GetPHOSClusters(TRefArray *clusters) const