Little changes to run for pdc04
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Sep 2004 16:06:23 +0000 (16:06 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Sep 2004 16:06:23 +0000 (16:06 +0000)
JETAN/AliJetEventParticles.cxx
JETAN/AliJetEventParticles.h
JETAN/AliJetParticle.cxx
JETAN/AliJetParticle.h
JETAN/AliJetParticlesReaderESD.cxx
JETAN/AliJetParticlesReaderESD.h
JETAN/AliJetParticlesReaderHLT.cxx
JETAN/AliJetParticlesReaderKine.cxx
JETAN/AliJetParticlesReaderKine.h

index 71fed7e..67e9325 100644 (file)
@@ -121,6 +121,51 @@ void  AliJetEventParticles::Reset(Int_t size)
   }
 } 
 
+void AliJetEventParticles::AddSignal(const AliJetEventParticles& source)
+{ //mark signal particles and add them to TClonesArray
+  //note that fNParticles still keeps only background particles
+
+  Int_t nSignalParts=source.GetNParticles();
+  for(Int_t i=0; i<nSignalParts; i++)
+    {
+      const AliJetParticle *kjp=source.GetParticle(i);
+
+      AliJetParticle *ap=new((*fParticles)[fNParticles+i]) AliJetParticle(*(kjp));
+      ap->SetType(-123); //mark pythia particle
+    }
+  for(Int_t i=nSignalParts+fNParticles;i<fParticles->GetEntriesFast();i++)
+    fParticles->RemoveAt(i);
+  //cout << fParticles->GetEntries() << " " << fNParticles << " " << nSignalParts << endl;
+
+  /* should we transform the vertex???
+  fVertexX=source.GetVertexX();
+  fVertexY=source.GetVertexY();
+  fVertexZ=source.GetVertexZ();
+  */
+  fTrials=source.Trials();
+  fNJets=source.NTriggerJets();
+  fNUQJets=source.NUQTriggerJets();
+  fXJet=source.GetXJet();
+  fYJet=source.GetXJet();
+
+
+  for (Int_t i = 0; i < 4; i++) fZquench[i] = 0.;
+  for (Int_t i = 0; i < 10; i++) 
+    for (Int_t j = 0; j < 4; j++) {
+      fJets[j][i]=0;    // Trigger jets
+      fUQJets[j][i]=0;  // Unquenched trigger jets
+    }
+  source.GetZQuench(fZquench);
+  for (Int_t i = 0; i < NTriggerJets(); i++){
+    source.TriggerJet(i,fJets[0][i],fJets[1][i],fJets[2][i],fJets[3][i]);
+  }
+  for (Int_t i = 0; i < NUQTriggerJets(); i++){
+    source.UQJet(i,fUQJets[0][i],fUQJets[1][i],fUQJets[2][i],fUQJets[3][i]);
+  }
+  source.Hard(0,fHard[0][0],fHard[1][0],fHard[2][0],fHard[3][0],fHard[4][0]);
+  source.Hard(1,fHard[0][1],fHard[1][1],fHard[2][1],fHard[3][1],fHard[4][1]);
+}
+
 void AliJetEventParticles::AddParticle(AliJetParticle* part)
 {
   //Adds new particle to the event
@@ -133,24 +178,24 @@ void AliJetEventParticles::AddParticle(const AliJetParticle* part)
   new((*fParticles)[fNParticles++]) AliJetParticle(*part);
 }
 
-void AliJetEventParticles::AddParticle(const TParticle* part,Int_t idx, Int_t l)
+void AliJetEventParticles::AddParticle(const TParticle* part,Int_t idx, Int_t l, Int_t ncl)
 {
   //Adds new particle to the event
-  new((*fParticles)[fNParticles++]) AliJetParticle(part,idx,l);
+  new((*fParticles)[fNParticles++]) AliJetParticle(part,idx,l,ncl);
 }
 
 void AliJetEventParticles::AddParticle(Float_t px, Float_t py, Float_t pz, 
-                              Float_t etot, Int_t idx, Int_t l)
+                              Float_t etot, Int_t idx, Int_t l, Int_t ncl)
 {
   //Adds new particle to the event
-  new((*fParticles)[fNParticles++]) AliJetParticle(px,py,pz,etot,idx,l); 
+  new((*fParticles)[fNParticles++]) AliJetParticle(px,py,pz,etot,idx,l,ncl); 
 }
 
 void AliJetEventParticles::AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l,
-                             Float_t pt, Float_t phi, Float_t eta)
+                             Int_t ncl, Float_t pt, Float_t phi, Float_t eta)
 {
   //Adds new particle to the event
-  new((*fParticles)[fNParticles++]) AliJetParticle(px,py,pz,etot,idx,l,pt,phi,eta); 
+  new((*fParticles)[fNParticles++]) AliJetParticle(px,py,pz,etot,idx,l,ncl,pt,phi,eta); 
 }
 
 const AliJetParticle* AliJetEventParticles::GetParticleSafely(Int_t n)
index 8f8d87d..69c6692 100644 (file)
@@ -12,8 +12,8 @@
 ///////////////////////////////////////////////////////////////////
 
 #include <TObject.h>
-//#include <TObjString.h>
 #include <TString.h>
+
 class TParticle;
 class TClonesArray;
 class AliJetParticle;
@@ -34,12 +34,14 @@ class AliJetEventParticles: public TObject
   //adds particle to the event
   void AddParticle(AliJetParticle* p);  
   void AddParticle(const AliJetParticle* p); 
-  void AddParticle(const TParticle* part,Int_t idx=-1, Int_t l=0); 
-  void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx=-1, Int_t l=0);
-  void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l,
+  void AddParticle(const TParticle* part,Int_t idx=-1, Int_t l=0, Int_t ncl=0); 
+  void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx=-1, Int_t l=0, Int_t ncl=0);
+  void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l, Int_t ncl,
                   Float_t pt, Float_t phi, Float_t eta);
 
-  const AliJetParticle* GetParticle(Int_t n) //gets particle without boundary check
+  void AddSignal(const AliJetEventParticles& source);
+
+  const AliJetParticle* GetParticle(Int_t n) const //gets particle without boundary check
     {return (const AliJetParticle*)fParticles->At(n);} 
   const AliJetParticle* GetParticleSafely(Int_t n); 
   Int_t GetNParticles()              const {return fNParticles;}
index 4c13ee2..fc2855d 100644 (file)
@@ -25,41 +25,52 @@ AliJetParticle::AliJetParticle() :
 AliJetParticle::AliJetParticle(const AliJetParticle& in) :
   TObject(in)
 {
+  Clear();
   SetMomentum(in.fPx,in.fPy,in.fPz,in.fE);
   fIdxInEvent=in.fIdxInEvent;
   fLabel=in.fLabel;
   fType=in.fType;
+  fNhits=in.fNhits;
 }
  
-AliJetParticle::AliJetParticle(const TParticle* p, Int_t idx, Int_t l) :
+AliJetParticle::AliJetParticle(const TParticle* p, Int_t idx, Int_t l, Int_t ncl) :
   TObject()
 {
+  Clear();
   SetMomentum(p->Px(),p->Py(),p->Pz(),p->Energy());
   fIdxInEvent=idx;
   fLabel=l;
-  fType=0;
+  fType=(Int_t)p->GetWeight();
+  fNhits=ncl;
 }
 
 AliJetParticle::AliJetParticle(Float_t px, Float_t py, Float_t pz, 
-                               Float_t etot, Int_t idx, Int_t l) :
+                               Float_t etot, Int_t idx, Int_t l, Int_t ncl) :
   TObject()
 {
+  Clear();
   SetMomentum(px,py,pz,etot);
   fIdxInEvent=idx;
   fLabel=l;
-  fType=0;
+  fNhits=ncl;
 }
 
 AliJetParticle::AliJetParticle(Float_t px, Float_t py, Float_t pz, 
-                               Float_t etot, Int_t idx, Int_t l,
+                               Float_t etot, Int_t idx, Int_t l, Int_t ncl,
                               Float_t pt, Float_t phi, Float_t eta) :
   TObject(),
   fPx(px),fPy(py),fPz(pz),
   fE(etot),fIdxInEvent(idx),
-  fType(0),fLabel(l),
+  fType(0),fLabel(l),fNhits(ncl),
   fPt(pt),fEta(eta),fPhi(phi)
 {
+}
 
+TParticle* AliJetParticle::Particle() const
+{
+  TParticle *ret=new TParticle(0,0,0,0,0,0,fPx,fPy,fPz,fE,0,0,0,0);
+  ret->SetWeight(fType);
+  return ret;
 }
 
 void AliJetParticle::Calculate()
@@ -75,13 +86,14 @@ void AliJetParticle::Calculate()
 
 void AliJetParticle::Clear(Option_t* /*t*/)
 {
-  fType=0;
   fPx=0.;
   fPy=0.;
   fPz=0.;
   fE=0.;
   fIdxInEvent=0;
+  fType=0;
   fLabel=0;
+  fNhits=0;
   fPt=0.;
   fEta=0.;
   fPhi=0.;
index 7871842..9d0dfe1 100644 (file)
@@ -20,9 +20,9 @@ class AliJetParticle : public TObject
   public:
   AliJetParticle();
   AliJetParticle(const AliJetParticle& in); 
-  AliJetParticle(const TParticle* p, Int_t idx, Int_t l=0);
-  AliJetParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l=0);
-  AliJetParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l,
+  AliJetParticle(const TParticle* p, Int_t idx, Int_t l=0, Int_t ncl=0);
+  AliJetParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l=0, Int_t ncl=0);
+  AliJetParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l, Int_t ncl,
                  Float_t pt, Float_t eta, Float_t phi);
   virtual ~AliJetParticle(){};
 
@@ -35,6 +35,7 @@ class AliJetParticle : public TObject
   void SetUID(Int_t id) {fIdxInEvent = id;}
   void SetLabel(Int_t l){fLabel = l;}
   void SetType(Int_t t) {fType = t;}  
+  void SetNhits(Int_t t) {fNhits = t;}
 
   Float_t P()      const {return TMath::Sqrt(fPx*fPx+fPy*fPy+fPz*fPz);}
   Float_t Y()      const {if (fE  != fPz) return 0.5*TMath::Log((fE+fPz)/(fE-fPz));
@@ -43,17 +44,20 @@ class AliJetParticle : public TObject
 
   Int_t GetUID()   const {return fIdxInEvent;}
   Int_t GetLabel() const {return fLabel;}
+  Int_t GetType()  const {return fType;}
+  Int_t GetNhts()  const {return fNhits;}
 
   Float_t Px()     const {return fPx;}
   Float_t Py()     const {return fPy;}
   Float_t Pz()     const {return fPz;}
   Float_t Energy() const {return fE;}
 
-  Int_t GetType()  const {return fType;}
   Float_t Pt()     const {return fPt;}
   Float_t Eta()    const {return fEta;}
   Float_t Phi()    const {return fPhi;} 
 
+  TParticle* Particle() const;
+
   void Clear(Option_t *t="");
   void Print(Option_t *t="") const;
   ULong_t Hash() const {return fIdxInEvent;}
@@ -70,12 +74,13 @@ class AliJetParticle : public TObject
   Float_t fPz;          // z component of momentum at vertex
   Float_t fE;           // total energy
   Int_t   fIdxInEvent;  // index of particle as appeared in complete event
-  Int_t fType;          // -123 if marked
+  Int_t   fType;        // -123 if marked
   Int_t   fLabel;       // assigned label
+  Int_t   fNhits;       // number of clusters
   Float_t fPt;          // normally calculated 
   Float_t fEta;         // normally calculated 
   Float_t fPhi;         // normally calculated 
 
-  ClassDef(AliJetParticle,2)  // Basic Jet Particle class
+  ClassDef(AliJetParticle,3)  // Basic Jet Particle class
 };
 #endif
index a30175b..b6b9e17 100644 (file)
 
 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 +44,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),
@@ -212,18 +216,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());
         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 +239,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
 
index 3458998..2c6e44c 100644 (file)
@@ -24,8 +24,8 @@ class AliESD;
 class AliJetParticlesReaderESD: public AliJetParticlesReader
 {
   public:
-  AliJetParticlesReaderESD(const Char_t* esdfilename = "AliESDs.root") ;
-  AliJetParticlesReaderESD(TObjArray* dirs,const Char_t* esdfilename = "AliESDs.root");
+  AliJetParticlesReaderESD(Bool_t constrained,const Char_t* esdfilename = "AliESDs.root") ;
+  AliJetParticlesReaderESD(Bool_t constrained,TObjArray* dirs,const Char_t* esdfilename = "AliESDs.root");
 
   void SetCompareFlag(ULong_t f){fPassFlag=f;}
   void SetCompareFlagTPC() {fPassFlag=AliESDtrack::kTPCrefit;}
@@ -43,6 +43,7 @@ class AliJetParticlesReaderESD: public AliJetParticlesReader
   TFile*   OpenFile(Int_t evno);      //opens file to be read for given event
   Bool_t   IsAcceptedParticle(Float_t px, Float_t py, Float_t pz) const;
     
+  Bool_t  fConstrained; // use constrained track parameters
   TString fESDFileName; // name of the file with tracks
   AliESD *fESD;         //! pointer to current esd object
   TFile*  fFile;        //! pointer to current ESD file
@@ -50,7 +51,7 @@ class AliJetParticlesReaderESD: public AliJetParticlesReader
   TIter*  fKeyIterator; //! key iterator through file
   ULong_t fPassFlag;    //flag to compare esd flag with 
 
-  ClassDef(AliJetParticlesReaderESD,1) //
+  ClassDef(AliJetParticlesReaderESD,2) //
 };
 
 inline Bool_t AliJetParticlesReaderESD::IsAcceptedParticle(Float_t pt, Float_t phi, Float_t eta) const
index ba462e8..d70a360 100644 (file)
@@ -140,7 +140,7 @@ Int_t AliJetParticlesReaderHLT::ReadESD(AliESD* esd)
     const Float_t kphi=TMath::Pi()+TMath::ATan2(-kpy,-kpx);
 
     if(IsAcceptedParticle(kpt,kphi,keta))
-      fEventParticles->AddParticle(kpx,kpy,kpz,kp,i,kesdtrack->GetMCid(),kpt,kphi,keta);
+      fEventParticles->AddParticle(kpx,kpy,kpz,kp,i,kesdtrack->GetMCid(),knhits,kpt,kphi,keta);
   } //loop over tracks
 
   return kTRUE;
index d55939c..fd1c5bf 100644 (file)
@@ -197,7 +197,7 @@ Int_t AliJetParticlesReaderKine::ReadNext()
            }
          }
        }
-       headdesc+="Run ";
+       headdesc+=" Run ";
        headdesc+=header->GetRun();
        headdesc+=": Ev ";
        headdesc+=header->GetEventNrInRun();
@@ -230,6 +230,7 @@ Int_t AliJetParticlesReaderKine::ReadNext()
            //}
          } else if(gentype==3){ //Pythia
            if(p->GetStatusCode()!=1) continue;
+           p->SetWeight(-123); //mark particle
          }
 
          //kinematic cuts
index 23dc993..85ecae6 100644 (file)
@@ -51,16 +51,27 @@ class AliJetParticlesReaderKine: public AliJetParticlesReader
 
 inline Bool_t AliJetParticlesReaderKine::IsAcceptedParticle(TParticle *p) const
 {
-  Int_t pcode=p->GetPdgCode();  
-  if ((pcode==11)||(pcode==-11)||(pcode==22)) {
+  Int_t pcode=TMath::Abs(p->GetPdgCode());  
+  
+  if ((pcode==11)||(pcode==22)) {
     if(!fEM) return kFALSE;
   }  else {
+#if 1
+    if(pcode!=211  && pcode!=321 && pcode!=2212 && 
+       pcode!=111  && pcode!=311 && pcode!=2112 && 
+       pcode!=3122 && pcode!=213 && pcode!=113 &&
+       pcode!=130 &&pcode!=310) {
+      //p->Print();
+      return kFALSE;
+    }
+#endif
     TParticlePDG *pdg=p->GetPDG();
     Int_t ch=(Int_t)pdg->Charge(); 
     if((!fCharged)&&(ch)) return kFALSE;
     if((!fNeutral)&&(!ch)) return kFALSE;
   }
 
+  //p->Print();
   Float_t eta=0.;//p->Eta();
   Float_t pz=p->Pz();
   //if(TMath::Abs(pz)>150.) return kFALSE;