fesdck->SetGenEventHeader(hdh);\r
fManager->ProcessEvent();\r
}\r
+ AliFemtoEventReaderStandard* fstd = dynamic_cast<AliFemtoEventReaderStandard *> (fReader);\r
+ if (fstd) \r
+ {\r
+ // Process the event with Kine information\r
+ fstd->SetESDSource(fESD);\r
+ if (mctruth) {\r
+ fstd->SetStackSource(fStack);\r
+ fstd->SetGenEventHeader(hdh);\r
+ fstd->SetInputType(AliFemtoEventReaderStandard::kESDKine);\r
+ }\r
+ else\r
+ fstd->SetInputType(AliFemtoEventReaderStandard::kESD);\r
+ fManager->ProcessEvent();\r
+ }\r
} \r
\r
// Post the output histogram list\r
faodc->SetAODSource(fAOD);\r
fManager->ProcessEvent();\r
}\r
+ AliFemtoEventReaderStandard* fstd = dynamic_cast<AliFemtoEventReaderStandard *> (fReader);\r
+\r
+ if (fstd) {\r
+ // Process the event\r
+ fstd->SetAODSource(fAOD);\r
+ fstd->SetInputType(AliFemtoEventReaderStandard::kAOD);\r
+ fManager->ProcessEvent();\r
+ }\r
}\r
} \r
\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoReaderESD(AliFemtoEventReaderESDChain *aReader)\r
{\r
- printf("Selectring Femto reader for ESD\n");\r
+ printf("Selecting Femto reader for ESD\n");\r
fReader = aReader;\r
}\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoReaderESDKine(AliFemtoEventReaderESDChainKine *aReader)\r
{\r
- printf("Selectring Femto reader for ESD with Kinematics information\n");\r
+ printf("Selecting Femto reader for ESD with Kinematics information\n");\r
fReader = aReader;\r
}\r
//________________________________________________________________________\r
printf("Selecting Femto reader for AOD\n");\r
fReader = aReader;\r
}\r
+void AliAnalysisTaskFemto::SetFemtoReaderStandard(AliFemtoEventReaderStandard *aReader)\r
+{\r
+ printf("Selecting Standard all-purpose Femto reader\n");\r
+ fReader = aReader;\r
+}\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoManager(AliFemtoManager *aManager)\r
{\r
AliFemtoEventReaderESDChain *tReaderESDChain = dynamic_cast<AliFemtoEventReaderESDChain *> (aManager->EventReader());\r
AliFemtoEventReaderESDChainKine *tReaderESDChainKine = dynamic_cast<AliFemtoEventReaderESDChainKine *> (aManager->EventReader());\r
AliFemtoEventReaderAODChain *tReaderAODChain = dynamic_cast<AliFemtoEventReaderAODChain *> (aManager->EventReader());\r
+ AliFemtoEventReaderStandard *tReaderStandard = dynamic_cast<AliFemtoEventReaderStandard *> (aManager->EventReader());\r
\r
- if ((!tReaderESDChain) && (!tReaderESDChainKine) && (!tReaderAODChain)) {\r
+ if ((!tReaderESDChain) && (!tReaderESDChainKine) && (!tReaderAODChain) && (!tReaderStandard)) {\r
printf("No AliFemto event reader created. Will not run femto analysis.\n");\r
return;\r
}\r
if (tReaderESDChain) SetFemtoReaderESD(tReaderESDChain);\r
if (tReaderESDChainKine) SetFemtoReaderESDKine(tReaderESDChainKine);\r
if (tReaderAODChain) SetFemtoReaderAOD(tReaderAODChain);\r
+ if (tReaderStandard) SetFemtoReaderStandard(tReaderStandard);\r
}\r
\r
#include "AliFemtoEventReaderESDChain.h"
#include "AliFemtoEventReaderESDChainKine.h"
#include "AliFemtoEventReaderAODChain.h"
+#include "AliFemtoEventReaderStandard.h"
#include "AliFemtoManager.h"
class AliAnalysisTaskFemto : public AliAnalysisTask {
void SetFemtoReaderESD(AliFemtoEventReaderESDChain *aReader);
void SetFemtoReaderESDKine(AliFemtoEventReaderESDChainKine *aReader);
void SetFemtoReaderAOD(AliFemtoEventReaderAODChain *aReader);
+ void SetFemtoReaderStandard(AliFemtoEventReaderStandard *aReader);
void SetFemtoManager(AliFemtoManager *aManager);
private:
bool AliFemtoBasicEventCut::Pass(const AliFemtoEvent* event){
// Pass events if they fall within the multiplicity and z-vertex
// position range. Fail otherwise
- int mult = event->NumberOfTracks();
+ // int mult = event->NumberOfTracks();
+ int mult = event->UncorrectedNumberOfPrimaries();
double vertexZPos = event->PrimVertPos().z();
// cout << "AliFemtoBasicEventCut:: mult: " << fEventMult[0] << " < " << mult << " < " << fEventMult[1] << endl;
// cout << "AliFemtoBasicEventCut:: VertexZPos: " << fVertZPos[0] << " < " << vertexZPos << " < " << fVertZPos[1] << endl;
fMass(0.13957)
{
// Default constructor
- fYPt = new TH2D("YPt", "Rapidity vs Pt", 100, -1.0, 1.0, 100, 0.1, 2.0);
+ fYPt = new TH2D("YPt", "Rapidity vs Pt", 100, -1.0, 1.0, 100, 0.0, 2.0);
fYPhi = new TH2D("YPhi", "Rapidity vs Phi", 100, -1.0, 1.0, 100, -TMath::Pi(), TMath::Pi());
- fPtPhi = new TH2D("PtPhi", "Pt vs Phi", 100, 0.1, 2.0, 100, -TMath::Pi(), TMath::Pi());
+ fPtPhi = new TH2D("PtPhi", "Pt vs Phi", 100, 0.0, 2.0, 100, -TMath::Pi(), TMath::Pi());
fEtaPhi = new TH2D("EtaPhi", "Pseudorapidity vs Phi", 100, -1.0, 1.0, 100, -TMath::Pi(), TMath::Pi());
- fEtaPt = new TH2D("EtaPt", "Pseudorapidity vs Pt", 100, -1.0, 1.0, 100, 0.1, 2.0);
+ fEtaPt = new TH2D("EtaPt", "Pseudorapidity vs Pt", 100, -1.0, 1.0, 100, 0.0, 2.0);
fEtaPhiW = new TH2D("EtaPhiW", "Pseudorapidity vs Phi chi2/N weighted", 100, -1.0, 1.0, 100, -TMath::Pi(), TMath::Pi());
- fEtaPtW = new TH2D("EtaPtW", "Pseudorapidity vs Pt chi2/N weighted", 100, -1.0, 1.0, 100, 0.1, 2.0);
+ fEtaPtW = new TH2D("EtaPtW", "Pseudorapidity vs Pt chi2/N weighted", 100, -1.0, 1.0, 100, 0.0, 2.0);
fDCARPt = new TH2D("DCARPt", "DCA in XY vs. Pt", 400, -2.0, 2.0, 100,0.0,2.0);
fDCAZPt = new TH2D("DCAZPt", "DCA in Z vs. Pt", 400, -2.0, 2.0, 100,0.0,2.0);
}
// Normal constructor
char name[200];
snprintf(name, 200, "YPt%s", aName);
- fYPt = new TH2D(name, "Rapdity vs Pt", 100, -1.0, 1.0, 100, 0.1, 2.0);
+ fYPt = new TH2D(name, "Rapdity vs Pt", 100, -1.0, 1.0, 100, 0.0, 2.0);
snprintf(name, 200, "YPhi%s", aName);
fYPhi = new TH2D(name, "Rapidity vs Phi", 100, -1.0, 1.0, 100, -TMath::Pi(), TMath::Pi());
snprintf(name, 200, "PtPhi%s", aName);
- fPtPhi = new TH2D(name, "Pt vs Phi", 100, 0.1, 2.0, 100, -TMath::Pi(), TMath::Pi());
+ fPtPhi = new TH2D(name, "Pt vs Phi", 100, 0.0, 2.0, 100, -TMath::Pi(), TMath::Pi());
snprintf(name, 200, "EtaPhi%s", aName);
fEtaPhi = new TH2D(name, "Pseudorapidity vs Phi", 100, -1.0, 1.0, 100, -TMath::Pi(), TMath::Pi());
snprintf(name, 200, "EtaPt%s", aName);
- fEtaPt = new TH2D(name, "Pseudorapidity vs Pt", 100, -1.0, 1.0, 100, 0.1, 2.0);
+ fEtaPt = new TH2D(name, "Pseudorapidity vs Pt", 100, -1.0, 1.0, 100, 0.0, 2.0);
snprintf(name, 200, "EtaPhiW%s", aName);
fEtaPhiW = new TH2D(name, "Pseudorapidity vs Phi chi2/N weighted", 100, -1.0, 1.0, 100, -TMath::Pi(), TMath::Pi());
snprintf(name, 200, "EtaPtW%s", aName);
- fEtaPtW = new TH2D(name, "Pseudorapidity vs Pt chi2/N weighted", 100, -1.0, 1.0, 100, 0.1, 2.0);
+ fEtaPtW = new TH2D(name, "Pseudorapidity vs Pt chi2/N weighted", 100, -1.0, 1.0, 100, 0.0, 2.0);
snprintf(name, 200, "DCARPt%s", aName);
fDCARPt = new TH2D(name, "DCA in XY vs. Pt", 400, -2.0, 2.0, 100,0.0,2.0);
snprintf(name, 200, "DCAZPt%s", aName);
fEventNumber(0),
fRunNumber(0),
fNumberOfTracks(0),
+ fNormalizedMult(-1),
fMagneticField(0),
fIsCollisionCandidate(kTRUE),
fPrimVertPos(0,0,0),
fEventNumber(0),
fRunNumber(0),
fNumberOfTracks(0),
+ fNormalizedMult(-1),
fMagneticField(0),
fIsCollisionCandidate(kTRUE),
fPrimVertPos(0,0,0),
fZDCEMEnergy=ev.fZDCEMEnergy;
fZDCParticipants=ev.fZDCParticipants;
fNumberOfTracks = ev.fNumberOfTracks;
+ fNormalizedMult = ev.fNormalizedMult;
fMagneticField= ev.fMagneticField;
fIsCollisionCandidate = ev.fIsCollisionCandidate;
fEventNumber(0),
fRunNumber(0),
fNumberOfTracks(0),
+ fNormalizedMult(-1),
fMagneticField(0),
fIsCollisionCandidate(kTRUE),
fPrimVertPos(0,0,0),
fZDCEMEnergy=aEvent.fZDCEMEnergy;
fZDCParticipants=aEvent.fZDCParticipants;
fNumberOfTracks = aEvent.fNumberOfTracks;
+ fNormalizedMult = aEvent.fNormalizedMult;
fMagneticField= aEvent.fMagneticField;
fIsCollisionCandidate = aEvent.fIsCollisionCandidate;
void AliFemtoEvent::SetZDCP2Energy(const float& aZDCP2Energy){fZDCP2Energy=aZDCP2Energy;}
void AliFemtoEvent::SetZDCEMEnergy(const float& aZDCEMEnergy){fZDCEMEnergy=aZDCEMEnergy;}
void AliFemtoEvent::SetZDCParticipants(const unsigned int& aZDCParticipants){fZDCParticipants=aZDCParticipants;}
-
void AliFemtoEvent::SetNumberOfTracks(const unsigned short& tracks){fNumberOfTracks = tracks;}
-
-
+void AliFemtoEvent::SetNormalizedMult(const int& i){fNormalizedMult = i;}
void AliFemtoEvent::SetPrimVertPos(const AliFemtoThreeVector& vp){fPrimVertPos = vp;}
void AliFemtoEvent::SetPrimVertCov(const double* v){
double AliFemtoEvent::UncorrectedNumberOfPrimaries() const
{
- // Count number of normalized charged tracks
- Int_t tNormTrackCount = 0;
- for (AliFemtoTrackIterator iter=fTrackCollection->begin();iter!=fTrackCollection->end();iter++){
- if (!((*iter)->Flags()&(AliFemtoTrack::kTPCrefit))) continue;
- if ((*iter)->TPCncls() < 50) continue;
- if ((*iter)->TPCchi2()/(*iter)->TPCncls() > 60.0) continue;
- if ((*iter)->ImpactD() > 6.0) continue;
- if ((*iter)->ImpactZ() > 6.0) continue;
- if (fabs((*iter)->P().pseudoRapidity()) > 0.9) continue;
-
- tNormTrackCount++;
+ if (fNormalizedMult < 0) {
+ // Count number of normalized charged tracks
+ Int_t tNormTrackCount = 0;
+ for (AliFemtoTrackIterator iter=fTrackCollection->begin();iter!=fTrackCollection->end();iter++){
+ if (!((*iter)->Flags()&(AliFemtoTrack::kTPCrefit))) continue;
+ if ((*iter)->TPCncls() < 50) continue;
+ if ((*iter)->TPCchi2()/(*iter)->TPCncls() > 60.0) continue;
+ if ((*iter)->ImpactD() > 6.0) continue;
+ if ((*iter)->ImpactZ() > 6.0) continue;
+ if (fabs((*iter)->P().pseudoRapidity()) > 0.9) continue;
+
+ tNormTrackCount++;
+ }
+ return tNormTrackCount;
}
- return tNormTrackCount;
+ return fNormalizedMult;
// return NumberOfTracks();
}
void SetEventNumber(const unsigned short& s);
void SetRunNumber(const int& i);
void SetNumberOfTracks(const unsigned short& s);
+ void SetNormalizedMult(const int& i);
void SetPrimVertPos(const AliFemtoThreeVector& v);
void SetPrimVertCov(const double* v);
void SetMagneticField(const double& x);
unsigned short fEventNumber; // Event number in file
unsigned short fRunNumber; // run number the event belong to
unsigned short fNumberOfTracks; // total number of TPC tracks
+ int fNormalizedMult; // normalized multiplicity
double fMagneticField; // magnetic field in Z direction
bool fIsCollisionCandidate; // is collision candidate
// }
+ int tNormMult = 0;
for (int i=0;i<nofTracks;i++)
{
bool tGoodMomentum=true; //flaga to chcek if we can read momentum of this track
-
+
const AliESDtrack *esdtrack=fEvent->GetTrack(i);//getting next track
// const AliESDfriendTrack *tESDfriendTrack = esdtrack->GetFriendTrack();
+ if (esdtrack->GetStatus() & AliESDtrack::kTPCrefit)
+ if (esdtrack->GetTPCNcls() > 80)
+ if (esdtrack->GetTPCchi2()/esdtrack->GetTPCNcls() < 6.0)
+ if (esdtrack->GetConstrainedParam())
+ if (esdtrack->GetConstrainedParam()->Eta() < 0.9)
+ tNormMult++;
// If reading ITS-only tracks, reject all with TPC
if (fTrackType == kITSOnly) {
}
hbtEvent->SetNumberOfTracks(realnofTracks);//setting number of track which we read in event
+ hbtEvent->SetNormalizedMult(tNormMult);
fCurEvent++;
cout<<"end of reading nt "<<nofTracks<<" real number "<<realnofTracks<<endl;
return hbtEvent;
Double_t tXside = (tPy * tRout - tPx * tRside)/tPt;
Double_t tBetaz = tPz/tEs;
- Double_t tGammaz = 1.0/(1-tBetaz*tBetaz);
+ Double_t tGammaz = 1.0/TMath::Sqrt(1-tBetaz*tBetaz);
Double_t tXlong = tGammaz * (tRlong + tBetaz * 0);
Double_t tXtime = tGammaz * (0 + tBetaz * tRlong);