//
//
-/*
+/*
marian.ivanov@cern.ch
Usage:
-
+
.L $ALICE_ROOT/STEER/AliGenInfo.C+
//be sure you created genTracks file before
.L $ALICE_ROOT/STEER/AliESDComparisonMI.C+
-
//
-ESDCmpTr *t2 = new ESDCmpTr("genTracks.root","cmpESDTracks.root","galice.root",-1,1,0);
+ESDCmpTr *t2 = new ESDCmpTr("genTracks.root","cmpESDTracks.root","galice.root",-1,0,0);
t2->Exec();
//
TCut csec("csec","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)>0.5");
-
-
-
TCut crec("crec","fReconstructed==1");
TCut cteta1("cteta1","abs(MC.fParticle.Theta()/3.1415-0.5)<0.25");
TCut cteta05("cteta05","abs(MC.fParticle.Theta()/3.1415-0.5)<0.1");
comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx2","fTRDOn&&abs(fPdg)==321&&fTRDtrack.fN>40&&fStatus[2]>1")
comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx3","fTRDOn&&abs(fPdg)==11&&fTRDtrack.fN>40&&fStatus[2]>1")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx0","fTRDOn&&abs(fPdg)==211&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx1","fTRDOn&&abs(fPdg)==2212&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx2","fTRDOn&&abs(fPdg)==321&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx3","fTRDOn&&abs(fPdg)==11&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx0","fTPCOn&&abs(fPdg)==211&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx1","fTPCOn&&abs(fPdg)==2212&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx2","fTPCOn&&abs(fPdg)==321&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx3","fTPCOn&&abs(fPdg)==11&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+hdedx3->SetXTitle("P(GeV/c)");
+hdedx3->SetYTitle("dEdx(unit)");
hdedx3->Draw(); hdedx1->Draw("same"); hdedx2->Draw("same"); hdedx0->Draw("same");
comp.DrawXY("fITSinP0[3]","fITSPools[4]","fReconstructed==1&&fPdg==-211&&fITSOn"+cprim,"1",4,0.2,1.0,-8,8)
#include "AliESDVertex.h"
#include "AliExternalTrackParam.h"
#include "AliESDkink.h"
-#include "AliESDV0MI.h"
+#include "AliESDv0.h"
#endif
#include "AliGenInfo.h"
+
+void MakeAliases(AliESDComparisonDraw&comp)
+{
+ //
+ // aliases definition
+ //
+ comp.fTree->SetAlias("radius","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)");
+ comp.fTree->SetAlias("direction","MC.fParticle.fVx*MC.fParticle.fPx+MC.fParticle.fVy*MC.fParticle.fPy");
+ comp.fTree->SetAlias("decaydir","MC.fTRdecay.fX*MC.fTRdecay.fPx+MC.fTRdecay.fY*MC.fTRdecay.fPy");
+ comp.fTree->SetAlias("theta","MC.fTrackRef.Theta()");
+ comp.fTree->SetAlias("primdca","sqrt(RC.fITStrack.fD[0]**2+RC.fITStrack.fD[1]**2)");
+ comp.fTree->SetAlias("trdchi2","fTRDtrack.fChi2/fTRDtrack.fN");
+ comp.fTree->SetAlias("trdchi2","fTRDtrack.fChi2/fTRDtrack.fN");
+
+ comp.fTree->SetAlias("trddedx","(RC.fESDTrack.fTRDsignals[0]+RC.fESDTrack.fTRDsignals[1]+RC.fESDTrack.fTRDsignals[2]+RC.fESDTrack.fTRDsignals[3]+RC.fESDTrack.fTRDsignals[4]+RC.fESDTrack.fTRDsignals[5])/6.");
+
+ comp.fTree->SetAlias("dtofmc2","fESDTrack.fTrackTime[2]-(10^12*MC.fTOFReferences[0].fTime)");
+ comp.fTree->SetAlias("dtofrc2","(fESDTrack.fTrackTime[2]-fESDTrack.fTOFsignal)");
+
+ comp.fTree->SetAlias("psum","fESDTrack.fTOFr[4]+fESDTrack.fTOFr[3]+fESDTrack.fTOFr[2]+fESDTrack.fTOFr[1]+fESDTrack.fTOFr[0]");
+ comp.fTree->SetAlias("P0","fESDTrack.fTOFr[0]/psum");
+ comp.fTree->SetAlias("P1","fESDTrack.fTOFr[1]/psum");
+ comp.fTree->SetAlias("P2","fESDTrack.fTOFr[2]/psum");
+ comp.fTree->SetAlias("P3","fESDTrack.fTOFr[3]/psum");
+ comp.fTree->SetAlias("P4","fESDTrack.fTOFr[4]/psum");
+ comp.fTree->SetAlias("MaxP","max(max(max(P0,P1),max(P2,P3)),P4)");
+}
+
+
+
+
void AliESDRecInfo::UpdatePoints(AliESDtrack*track)
{
//
//
//
-void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed)
+void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed, AliESD *event)
{
//
//
fStatus[1] =2;
}
else{
- fStatus[1]=1;
+ if ((fESDTrack.GetStatus()&AliESDtrack::kTPCin)>0)
+ fStatus[1]=1;
}
}
//
}
- if (fStatus[1]>0 &&info->fNTPCRef>0){
+ if (fStatus[1]>0 &&info->fNTPCRef>0&&TMath::Abs(fTPCinP0[3])>0.0001){
//TPC
fESDTrack.GetInnerXYZ(fTPCinR1);
fTPCinR1[3] = TMath::Sqrt(fTPCinR1[0]*fTPCinR1[0]+fTPCinR1[1]*fTPCinR1[1]);
fTPCinP1[4] = TMath::Sqrt(fTPCinP1[3]*fTPCinP1[3]+fTPCinP1[2]*fTPCinP1[2]);
//
//
- if (fTPCinP1[3]>0.0000001){
+ if (fTPCinP1[3]>0.000000000000001){
fTPCAngle1[0] = TMath::ATan2(fTPCinP1[1],fTPCinP1[0]);
fTPCAngle1[1] = TMath::ATan(fTPCinP1[2]/fTPCinP1[3]);
}
- Double_t cov[15], param[5],x;
+ Double_t cov[15], param[5],x, alpha;
fESDTrack.GetInnerExternalCovariance(cov);
- fESDTrack.GetInnerExternalParameters(x,param);
+ fESDTrack.GetInnerExternalParameters(alpha, x,param);
if (x<50) return ;
//
fTPCDelta[0] = (fTPCinR0[4]-fTPCinR1[4])*fTPCinR1[3]; //delta rfi
fTPCDelta[4] = (fTPCinP0[3]-fTPCinP1[3]);
Double_t sign = (param[4]>0)? 1.:-1;
fSign =sign;
- fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(cov[14]);
+ fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
}
if (fITSOn){
// ITS
if (fDist2<10.5){
Double_t x,alpha,param[5],cov[15];
//
- fT1.fESDTrack.GetInnerExternalParameters(x,param);
+ fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT1.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT1.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramm(x,alpha,param,cov);
//
- fT2.fESDTrack.GetInnerExternalParameters(x,param);
+ fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT2.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT2.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramd(x,alpha,param,cov);
}
//
if (fDist2<10.5){
Double_t x,alpha,param[5],cov[15];
//
- fT1.fESDTrack.GetInnerExternalParameters(x,param);
+ fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT1.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT1.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramm(x,alpha,param,cov);
//
- fT2.fESDTrack.GetInnerExternalParameters(x,param);
+ fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT2.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT2.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramd(x,alpha,param,cov);
/*
AliESDkink kink;
cerr<<"restricted number of events availaible"<<endl;
}
AliMagF * magf = gAlice->Field();
- AliTracker::SetFieldMap(magf);
+ AliTracker::SetFieldMap(magf,0);
}
fNextTreeGenEntryToRead = 0;
fNextKinkToRead = 0;
+ fNextV0ToRead =0;
cerr<<"fFirstEventNr, fNEvents: "<<fFirstEventNr<<" "<<fNEvents<<endl;
for (Int_t eventNr = fFirstEventNr; eventNr < fFirstEventNr+fNEvents;
eventNr++) {
fRecInfo = new AliESDRecInfo;
AliESDtrack * esdTrack = new AliESDtrack;
// AliITStrackMI * itsTrack = new AliITStrackMI;
- fTreeCmp->Branch("MC","AliMCInfo",&fMCInfo);
- fTreeCmp->Branch("RC","AliESDRecInfo",&fRecInfo);
+ fTreeCmp->Branch("MC","AliMCInfo",&fMCInfo,256000);
+ fTreeCmp->Branch("RC","AliESDRecInfo",&fRecInfo,256000);
// fTreeCmp->Branch("fESDTrack","AliESDtrack",&esdTrack);
// fTreeCmp->Branch("ITS","AliITStrackMI",&itsTrack);
delete esdTrack;
fTreeCmpKinks = new TTree("ESDcmpKinks","ESDcmpKinks");
fGenKinkInfo = new AliGenKinkInfo;
fRecKinkInfo = new AliESDRecKinkInfo;
- fTreeCmpKinks->Branch("MC.","AliGenKinkInfo",&fGenKinkInfo);
- fTreeCmpKinks->Branch("RC.","AliESDRecKinkInfo",&fRecKinkInfo);
+ fTreeCmpKinks->Branch("MC.","AliGenKinkInfo",&fGenKinkInfo,256000);
+ fTreeCmpKinks->Branch("RC.","AliESDRecKinkInfo",&fRecKinkInfo,256000);
//
//
fTreeCmpV0 = new TTree("ESDcmpV0","ESDcmpV0");
fGenV0Info = new AliGenV0Info;
fRecV0Info = new AliESDRecV0Info;
- fTreeCmpV0->Branch("MC.","AliGenV0Info", &fGenV0Info);
- fTreeCmpV0->Branch("RC.","AliESDRecV0Info",&fRecV0Info);
+ fTreeCmpV0->Branch("MC.","AliGenV0Info", &fGenV0Info,256000);
+ fTreeCmpV0->Branch("RC.","AliESDRecV0Info",&fRecV0Info,256000);
//
fTreeCmp->AutoSave();
fTreeCmpKinks->AutoSave();
Float_t x[3] = { trackRef->X(),trackRef->Y(),trackRef->Z()};
Int_t index[4];
paramTPC->Transform0to1(x,index);
- paramTPC->Transform1to2(x,index);
+ paramTPC->Transform1to2Ideal(x,index);
return TVector3(x);
}
////////////////////////////////////////////////////////////////////////
//
Int_t nEntries = (Int_t)fEvent->GetNumberOfTracks();
Int_t nKinks = (Int_t) fEvent->GetNumberOfKinks();
- Int_t nV0MIs = (Int_t) fEvent->GetNumberOfV0MIs();
+ Int_t nV0MIs = (Int_t) fEvent->GetNumberOfV0s();
fSignedKinks = new Short_t[nKinks];
fSignedV0 = new Short_t[nV0MIs];
//
}
//
for (Int_t i=0; i<nV0MIs;i++){
- AliESDV0MI * v0MI =fEvent->GetV0MI(i);
+ AliESDv0 * v0MI =fEvent->GetV0(i);
fSignedV0[i]=0;
if (v0MI->fStatus<0) continue;
}
}
// --sort reconstructed V0
//
- AliESDV0MI * v0MI=0;
+ AliESDv0 * v0MI=0;
for (Int_t iEntry=0; iEntry<nV0MIs;iEntry++){
- v0MI = fEvent->GetV0MI(iEntry);
+ v0MI = fEvent->GetV0(iEntry);
if (!v0MI) continue;
//
// Int_t label0 = TMath::Abs(v0MI->fLab[0]);
TBranch * branch = fTreeCmp->GetBranch("RC");
branch->SetAddress(&fRecInfo); // set all pointers
fRecArray = new TObjArray(fNParticles);
+ AliESDtrack dummytrack; //
while (entry < nParticlesTR) {
fTreeGenTracks->GetEntry(entry);
}
}
//
- fRecInfo->fESDTrack =*track;
+ if (track) {
+ new (&(fRecInfo->fESDTrack)) AliESDtrack(*track);
+ }else{
+ fRecInfo->fESDTrack = dummytrack;
+ }
+
if (track->GetITStrack())
fRecInfo->fITStrack = *((AliITStrackMI*)track->GetITStrack());
+ else{
+ fRecInfo->fITStrack = *track;
+ }
if (track->GetTRDtrack()){
fRecInfo->fTRDtrack = *((AliTRDtrack*)track->GetTRDtrack());
}
fRecInfo->fFake = fFakeRecTracks[fMCInfo->fLabel];
fRecInfo->fMultiple = fMultiRecTracks[fMCInfo->fLabel];
//
- fRecInfo->Update(fMCInfo,fParamTPC,kTRUE);
+ fRecInfo->Update(fMCInfo,fParamTPC,kTRUE, fEvent);
}
else{
- fRecInfo->Update(fMCInfo,fParamTPC,kFALSE);
+ fRecInfo->fESDTrack = dummytrack;
+ fRecInfo->Update(fMCInfo,fParamTPC,kFALSE, fEvent);
}
fRecArray->AddAt(new AliESDRecInfo(*fRecInfo),fMCInfo->fLabel);
fTreeCmp->Fill();
//
// TPC V0 Info
Double_t x,alpha, param[5],cov[15];
- fRecV0Info->fT1.fESDTrack.GetInnerExternalParameters(x,param);
- fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fRecV0Info->fT1.fESDTrack.GetInnerAlpha();
- AliExternalTrackParam paramP(x,alpha,param,cov);
- //
- fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(x,param);
- fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fRecV0Info->fT2.fESDTrack.GetInnerAlpha();
- AliExternalTrackParam paramM(x,alpha,param,cov);
- //
- fRecV0Info->fV0tpc.SetM(paramM);
- fRecV0Info->fV0tpc.SetP(paramP);
- Double_t pid1[5],pid2[5];
- fRecV0Info->fT1.fESDTrack.GetESDpid(pid1);
- fRecV0Info->fT1.fESDTrack.GetESDpid(pid2);
- //
- fRecV0Info->fV0tpc.UpdatePID(pid1,pid2);
- fRecV0Info->fV0tpc.Update(vertex);
- //
- //
- fRecV0Info->fT1.fESDTrack.GetExternalParameters(x,param);
- fRecV0Info->fT1.fESDTrack.GetExternalCovariance(cov);
- alpha = fRecV0Info->fT1.fESDTrack.GetAlpha();
- new (¶mP) AliExternalTrackParam(x,alpha,param,cov);
- //
- fRecV0Info->fT2.fESDTrack.GetExternalParameters(x,param);
- fRecV0Info->fT2.fESDTrack.GetExternalCovariance(cov);
- alpha = fRecV0Info->fT2.fESDTrack.GetAlpha();
- new (¶mM) AliExternalTrackParam(x,alpha,param,cov);
- //
- fRecV0Info->fV0its.SetM(paramM);
- fRecV0Info->fV0its.SetP(paramP);
- fRecV0Info->fV0its.UpdatePID(pid1,pid2);
- fRecV0Info->fV0its.Update(vertex);
-
+ if ( fRecV0Info->fT1.fESDTrack.GetInnerParam() && fRecV0Info->fT2.fESDTrack.GetInnerParam()){
+ fRecV0Info->fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
+ fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
+ AliExternalTrackParam paramP(x,alpha,param,cov);
+ //
+ fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
+ fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
+ AliExternalTrackParam paramM(x,alpha,param,cov);
+ //
+ fRecV0Info->fV0tpc.SetM(paramM);
+ fRecV0Info->fV0tpc.SetP(paramP);
+ Double_t pid1[5],pid2[5];
+ fRecV0Info->fT1.fESDTrack.GetESDpid(pid1);
+ fRecV0Info->fT1.fESDTrack.GetESDpid(pid2);
+ //
+ fRecV0Info->fV0tpc.UpdatePID(pid1,pid2);
+ fRecV0Info->fV0tpc.Update(vertex);
+
+ //
+ //
+ fRecV0Info->fT1.fESDTrack.GetExternalParameters(x,param);
+ fRecV0Info->fT1.fESDTrack.GetExternalCovariance(cov);
+ alpha = fRecV0Info->fT1.fESDTrack.GetAlpha();
+ new (¶mP) AliExternalTrackParam(x,alpha,param,cov);
+ //
+ fRecV0Info->fT2.fESDTrack.GetExternalParameters(x,param);
+ fRecV0Info->fT2.fESDTrack.GetExternalCovariance(cov);
+ alpha = fRecV0Info->fT2.fESDTrack.GetAlpha();
+ new (¶mM) AliExternalTrackParam(x,alpha,param,cov);
+ //
+ fRecV0Info->fV0its.SetM(paramM);
+ fRecV0Info->fV0its.SetP(paramP);
+ fRecV0Info->fV0its.UpdatePID(pid1,pid2);
+ fRecV0Info->fV0its.Update(vertex);
+ }
}
if (TMath::Abs(fGenV0Info->fMCm.fPdg)==11 &&TMath::Abs(fGenV0Info->fMCd.fPdg)==11){
if (fRecV0Info->fDist2>10){
Int_t label = TMath::Min(fGenV0Info->fMCm.fLabel,fGenV0Info->fMCd.fLabel);
Int_t label2 = TMath::Max(fGenV0Info->fMCm.fLabel,fGenV0Info->fMCd.fLabel);
- AliESDV0MI *v0MI=0;
+ AliESDv0 *v0MI=0;
fRecV0Info->fRecStatus =0;
fRecV0Info->fMultiple = fMultiRecV0[label];
fRecV0Info->fV0Multiple=0;
// for (Int_t j=0;j<TMath::Min(fMultiRecV0s[label],100);j++){
for (Int_t j=TMath::Min(fMultiRecV0[label],Short_t(20))-1;j>=0;j--){
Int_t index = fIndexRecV0[label*20+j];
- AliESDV0MI *v0MI2 = fEvent->GetV0MI(index);
+ if (index<0) continue;
+ AliESDv0 *v0MI2 = fEvent->GetV0(index);
if (TMath::Abs(v0MI2->fLab[0])==label &&TMath::Abs(v0MI2->fLab[1])==label2) {
v0MI =v0MI2;
fRecV0Info->fV0Multiple++;
//
// write fake v0s
- Int_t nV0MIs = fEvent->GetNumberOfV0MIs();
+ Int_t nV0MIs = fEvent->GetNumberOfV0s();
for (Int_t i=0;i<nV0MIs;i++){
if (fSignedV0[i]==0){
- AliESDV0MI *v0MI = fEvent->GetV0MI(i);
+ AliESDv0 *v0MI = fEvent->GetV0(i);
if (!v0MI) continue;
//
fRecV0Info->fV0rec = *v0MI;
fTreeCmpV0->AutoSave();
- fRecArray->Delete();
printf("Time spended in BuilV0Info Loop\n");
timer.Print();
if (fDebug > 2) cerr<<"end of BuildV0Info Loop"<<endl;