X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=JETAN%2FAliJetParticlesReaderESD.cxx;h=d58d34a657f04651fd8c9c121a90ee98c60d5816;hp=a30175bdb9aa4740ed3b37a788e0eb43be233d8c;hb=bad753b172033bf568492d0af8d4c8af3e5dee0b;hpb=04a02430959ee4c7cb50f9395c124de836402c23 diff --git a/JETAN/AliJetParticlesReaderESD.cxx b/JETAN/AliJetParticlesReaderESD.cxx index a30175bdb9a..d58d34a657f 100644 --- a/JETAN/AliJetParticlesReaderESD.cxx +++ b/JETAN/AliJetParticlesReaderESD.cxx @@ -11,6 +11,7 @@ // // ////////////////////////////////////////////////////////////////////// +#include #include #include #include @@ -27,8 +28,10 @@ ClassImp(AliJetParticlesReaderESD) -AliJetParticlesReaderESD::AliJetParticlesReaderESD(const Char_t* esdfilename) : +AliJetParticlesReaderESD::AliJetParticlesReaderESD(Bool_t constrained, + const Char_t* esdfilename) : AliJetParticlesReader(), + fConstrained(constrained), fESDFileName(esdfilename), fESD(0), fFile(0), @@ -42,9 +45,11 @@ AliJetParticlesReaderESD::AliJetParticlesReaderESD(const Char_t* esdfilename) : /********************************************************************/ AliJetParticlesReaderESD::AliJetParticlesReaderESD( + Bool_t constrained, TObjArray* dirs, const Char_t* esdfilename) : AliJetParticlesReader(dirs), + fConstrained(constrained), fESDFileName(esdfilename), fESD(0), fFile(0), @@ -66,85 +71,6 @@ AliJetParticlesReaderESD::~AliJetParticlesReaderESD() if(fFile) delete fFile; } - -Int_t AliJetParticlesReaderESD::ReadNext() -{ - //reads next event from fFile - - do // is OK even if 0 dirs specified, - { // in that case we try to read from "./" - if (fFile == 0) - { - fFile = OpenFile(fCurrentDir); - if (fFile == 0) - { - Error("ReadNext","Can't get fFile for dir no. %d",fCurrentDir); - fCurrentDir++; - continue; - } - - fCurrentEvent = 0; - //fFile->GetListOfKeys()->Print(); - - if(fTree) delete fTree; - fTree = dynamic_cast(fFile->Get("esdTree")); - if(fTree) - fTree->SetBranchAddress("ESD",&fESD); - else - fKeyIterator = new TIter(fFile->GetListOfKeys()); - } - - if(fTree) - { - if(AliKalmanTrack::GetConvConst()<=0.) - AliKalmanTrack::SetMagneticField(0.5); - if(fCurrentEvent>=fTree->GetEntries()) - { - fCurrentDir++; - delete fTree; - fTree = 0; - delete fFile; - fFile = 0; - continue; - } - fTree->GetEvent(fCurrentEvent); - } - else - { // "old" way via ESD objects stored in root file - TKey* key = (TKey*)fKeyIterator->Next(); - if (key == 0) - { - fCurrentDir++; - delete fKeyIterator; - fKeyIterator = 0; - delete fFile; //we have to assume there are no more ESD objects in the fFile - fFile = 0; - continue; - } - TString esdname = "ESD"; - esdname+=fCurrentEvent; - if(fESD) delete fESD; - fESD = dynamic_cast(fFile->Get(esdname)); - if (fESD == 0) - { - Info("ReadNext","Can't find AliESD object named %s",esdname.Data()); - fCurrentDir++; - delete fKeyIterator; - fKeyIterator = 0; - delete fFile;//we have to assume there is no more ESD objects in the fFile - fFile = 0; - continue; - } - } - ReadESD(fESD); - fCurrentEvent++; - fNEventsRead++; - return kTRUE;//success -> read one event - } while(fCurrentDir < GetNumberOfDirs()); - //end of loop over directories specified in fDirs Obj Array - return kFALSE; //no more directories to read -} - /**********************************************************/ Int_t AliJetParticlesReaderESD::ReadESD(AliESD* esd) @@ -205,6 +131,7 @@ Int_t AliJetParticlesReaderESD::ReadESD(AliESD* esd) //loop over tracks for (Int_t i = 0;iGetTrack(i); if (kesdtrack == 0) { @@ -212,18 +139,22 @@ Int_t AliJetParticlesReaderESD::ReadESD(AliESD* esd) continue; } - if ((kesdtrack->GetStatus() & fPassFlag) == kFALSE) + if ((kesdtrack->GetStatus() & fPassFlag)!=fPassFlag) { - Info("ReadNext","Particle skipped: %ud.",kesdtrack->GetStatus()); + Info("ReadNext","Particle skipped: %u.",kesdtrack->GetStatus()); continue; } Double_t mom[3]; //momentum - kesdtrack->GetPxPyPz(mom); - //kesdtrack->GetConstrainedPxPyPz(mom); - //Double_t pos[3];//position - //kesdtrack->GetXYZ(pos); - //kesdtrack->GetConstrainedXYZ(pos); + Double_t xyz[3]; //position + if (fConstrained) { + if (kesdtrack->GetConstrainedChi2() > 25) continue; + kesdtrack->GetConstrainedPxPyPz(mom); + kesdtrack->GetConstrainedXYZ(xyz); + } else { + kesdtrack->GetPxPyPz(mom); + kesdtrack->GetXYZ(xyz); + } const Float_t kmass=kesdtrack->GetMass(); const Float_t kp2=mom[0]*mom[0]+mom[1]*mom[1]+mom[2]*mom[2]; const Float_t ketot=TMath::Sqrt(kmass*kmass+kp2); @@ -231,8 +162,16 @@ Int_t AliJetParticlesReaderESD::ReadESD(AliESD* esd) const Float_t kp=TMath::Sqrt(kp2); const Float_t keta=0.5*TMath::Log((kp+mom[2]+1e-30)/(kp-mom[2]+1e-30)); const Float_t kphi=TMath::Pi()+TMath::ATan2(-mom[1],-mom[0]); + //Double_t dx = xyz[0]-vertexpos[0]; + //Double_t dy = xyz[1]-vertexpos[1]; + //Float_t dca = TMath::Sqrt(dx*dx + dy*dy); + //Float_t dz = xyz[2]-vertexpos[2]; + UInt_t index[6]; + const Int_t kncl=kesdtrack->GetITSclusters(index) + +kesdtrack->GetTPCclusters(NULL) + +kesdtrack->GetTRDclusters(NULL); if(IsAcceptedParticle(kpt,kphi,keta)) - fEventParticles->AddParticle(mom[0],mom[1],mom[2],ketot,i,kesdtrack->GetLabel(),kpt,kphi,keta); + fEventParticles->AddParticle(mom[0],mom[1],mom[2],ketot,i,kesdtrack->GetLabel(),kncl,kpt,kphi,keta); } // loop over tracks @@ -255,6 +194,86 @@ void AliJetParticlesReaderESD::Rewind() /**********************************************************/ +Int_t AliJetParticlesReaderESD::ReadNext() +{ + //reads next event from fFile + + do // is OK even if 0 dirs specified, + { // in that case we try to read from "./" + if (fFile == 0) + { + fFile = OpenFile(fCurrentDir); + if (fFile == 0) + { + Error("ReadNext","Can't get fFile for dir no. %d",fCurrentDir); + fCurrentDir++; + continue; + } + + fCurrentEvent = 0; + //fFile->GetListOfKeys()->Print(); + + if(fTree) delete fTree; + fTree = dynamic_cast(fFile->Get("esdTree")); + if(fTree) + fTree->SetBranchAddress("ESD",&fESD); + else + fKeyIterator = new TIter(fFile->GetListOfKeys()); + } + + if(fTree) + { + if(AliKalmanTrack::GetConvConst()<=0.) + AliKalmanTrack::SetMagneticField(0.5); + if(fCurrentEvent>=fTree->GetEntries()) + { + fCurrentDir++; + delete fTree; + fTree = 0; + delete fFile; + fFile = 0; + continue; + } + fTree->GetEvent(fCurrentEvent); + } + else + { // "old" way via ESD objects stored in root file + TKey* key = (TKey*)fKeyIterator->Next(); + if (key == 0) + { + fCurrentDir++; + delete fKeyIterator; + fKeyIterator = 0; + delete fFile; //we have to assume there are no more ESD objects in the fFile + fFile = 0; + continue; + } + TString esdname = "ESD"; + esdname+=fCurrentEvent; + if(fESD) delete fESD; + fESD = dynamic_cast(fFile->Get(esdname)); + if (fESD == 0) + { + Info("ReadNext","Can't find AliESD object named %s",esdname.Data()); + fCurrentDir++; + delete fKeyIterator; + fKeyIterator = 0; + delete fFile;//we have to assume there is no more ESD objects in the fFile + fFile = 0; + continue; + } + } + ReadESD(fESD); + fCurrentEvent++; + fNEventsRead++; + return kTRUE;//success -> read one event + } while(fCurrentDir < GetNumberOfDirs()); + //end of loop over directories specified in fDirs Obj Array + return kFALSE; //no more directories to read +} + +/**********************************************************/ + TFile* AliJetParticlesReaderESD::OpenFile(Int_t n) { //opens fFile with kine tree