Minor upgrades to the cut and to the mini-event. Added a non-streamed temp data membe...
authorpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Sep 2011 15:43:09 +0000 (15:43 +0000)
committerpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Sep 2011 15:43:09 +0000 (15:43 +0000)
PWG2/RESONANCES/AliRsnCutKaonForPhi2010PP.cxx
PWG2/RESONANCES/AliRsnMiniEvent.cxx
PWG2/RESONANCES/AliRsnMiniEvent.h
PWG2/RESONANCES/AliRsnMiniOutput.cxx
PWG2/RESONANCES/AliRsnMiniOutput.h

index 047c3bc..4b6458c 100644 (file)
@@ -106,11 +106,8 @@ Bool_t AliRsnCutKaonForPhi2010PP::IsSelected(TObject *obj)
    if (!TargetOK(obj)) return kFALSE;
    
    // check track
-   AliVTrack *track = fDaughter->Ref2Vtrack();
-   if (!track) {
-      if (!fDaughter->GetRef()) AliWarning("NULL ref");
-      return kFALSE;
-   }
+   AliVTrack *track = dynamic_cast<AliVTrack*>(fDaughter->GetRef());
+   if (!track) return kFALSE;
    
    // check flags
    if ((track->GetStatus() & AliESDtrack::kTPCin   ) == 0) return kFALSE;
@@ -130,7 +127,8 @@ Bool_t AliRsnCutKaonForPhi2010PP::IsSelected(TObject *obj)
    // PID TPC :
    // depends on momentum
    // and if local PID object is initialized, it is used instead of that got from manager
-   if (track->GetTPCmomentum() < fLimitTPC) 
+   Double_t mom = (Double_t)TMath::Abs(track->GetTPCmomentum());
+   if (mom < fLimitTPC) 
       SetRangeD(0.0, fNSigmaTPCLow);
    else
       SetRangeD(0.0, fNSigmaTPCHigh);
index 7970e19..c7e5106 100644 (file)
@@ -50,7 +50,7 @@ AliRsnMiniParticle* AliRsnMiniEvent::LeadingParticle()
 }
 
 //__________________________________________________________________________________________________
-TArrayI AliRsnMiniEvent::CountParticles(Char_t charge, Int_t cutID)
+Int_t AliRsnMiniEvent::CountParticles(TArrayI &found, Char_t charge, Int_t cutID)
 {
 //
 // Counts how many particles have the specified charge and cut bit
@@ -60,15 +60,16 @@ TArrayI AliRsnMiniEvent::CountParticles(Char_t charge, Int_t cutID)
 
    Int_t i, npart = fParticles.GetEntriesFast();
    Int_t    count = 0;
-   TArrayI  found(npart);
    AliRsnMiniParticle *part = 0x0;
    
+   found.Set(npart);
+   
    for (i = 0; i < npart; i++) {
       part = (AliRsnMiniParticle*)fParticles[i];
       if (charge == '+' || charge == '-' || charge == '0') {
          if (part->Charge() != charge) continue;
       }
-      if (cutID > 0) {
+      if (cutID >= 0) {
          if (!part->HasCutBit(cutID)) continue;
       }
       found[count] = i;
@@ -76,5 +77,5 @@ TArrayI AliRsnMiniEvent::CountParticles(Char_t charge, Int_t cutID)
    }
    
    found.Set(count);
-   return found;
+   return count;
 }
index f6fdfc6..4218477 100644 (file)
@@ -26,7 +26,7 @@ public:
    TClonesArray&       Particles() {return fParticles;}
    Bool_t              IsEmpty()   {return fParticles.IsEmpty();}
    
-   TArrayI             CountParticles(Char_t charge = 0, Int_t cutID = -1);
+   Int_t               CountParticles(TArrayI &found, Char_t charge = 0, Int_t cutID = -1);
    AliRsnMiniParticle* GetParticle(Int_t i);
    AliRsnMiniParticle* LeadingParticle();
    void                AddParticle(AliRsnMiniParticle copy);
index a6ea67b..93bdbec 100644 (file)
@@ -42,7 +42,9 @@ AliRsnMiniOutput::AliRsnMiniOutput() :
    fAxes("AliRsnMiniAxis", 0),
    fComputed(0),
    fPair(),
-   fList(0x0)
+   fList(0x0),
+   fSel1(0),
+   fSel2(0)
 {
 //
 // Constructor
@@ -65,7 +67,9 @@ AliRsnMiniOutput::AliRsnMiniOutput(const char *name, EOutputType type, EComputat
    fAxes("AliRsnMiniAxis", 0),
    fComputed(0),
    fPair(),
-   fList(0x0)
+   fList(0x0),
+   fSel1(0),
+   fSel2(0)
 {
 //
 // Constructor
@@ -88,7 +92,9 @@ AliRsnMiniOutput::AliRsnMiniOutput(const char *name, const char *outType, const
    fAxes("AliRsnMiniAxis", 0),
    fComputed(0),
    fPair(),
-   fList(0x0)
+   fList(0x0),
+   fSel1(0),
+   fSel2(0)
 {
 //
 // Constructor, with a more user friendly implementation, where
@@ -157,7 +163,9 @@ AliRsnMiniOutput::AliRsnMiniOutput(const AliRsnMiniOutput &copy) :
    fAxes(copy.fAxes),
    fComputed(copy.fComputed),
    fPair(),
-   fList(copy.fList)
+   fList(copy.fList),
+   fSel1(0),
+   fSel2(0)
 {
 //
 // Copy constructor
@@ -195,6 +203,9 @@ AliRsnMiniOutput& AliRsnMiniOutput::operator=(const AliRsnMiniOutput &copy)
       fCharge[i] = copy.fCharge[i];
    }
    
+   fSel1.Set(0);
+   fSel2.Set(0);
+   
    return (*this);
 }
 
@@ -424,16 +435,14 @@ Int_t AliRsnMiniOutput::FillPair(AliRsnMiniEvent *event1, AliRsnMiniEvent *event
    Bool_t sameCriteria = ((fCharge[0] == fCharge[1]) && (fDaughter[0] == fDaughter[1]));
    Bool_t sameEvent = (event1->ID() == event2->ID());
    
-   TArrayI selected1 = event1->CountParticles(fCharge[0], fCutID[0]);
-   TArrayI selected2 = event2->CountParticles(fCharge[1], fCutID[1]);
    TString selList1  = "";
    TString selList2  = "";
-   Int_t   n1 = selected1.GetSize();
-   Int_t   n2 = selected2.GetSize();
-   for (i1 = 0; i1 < n1; i1++) selList1.Append(Form("%d ", selected1[i1]));
-   for (i2 = 0; i2 < n2; i2++) selList2.Append(Form("%d ", selected2[i2]));
-   AliDebugClass(1, Form("Particle #1: [%s] -- event ID = %6d -- required charge = %c -- required cut ID = %d --> found %4d tracks (%s)", (event1 == event2 ? "def" : "mix"), event1->ID(), fCharge[0], fCutID[0], n1, selList1.Data()));
-   AliDebugClass(1, Form("Particle #2: [%s] -- event ID = %6d -- required charge = %c -- required cut ID = %d --> found %4d tracks (%s)", (event1 == event2 ? "def" : "mix"), event2->ID(), fCharge[1], fCutID[1], n2, selList2.Data()));
+   Int_t   n1 = event1->CountParticles(fSel1, fCharge[0], fCutID[0]);
+   Int_t   n2 = event2->CountParticles(fSel2, fCharge[1], fCutID[1]);
+   for (i1 = 0; i1 < n1; i1++) selList1.Append(Form("%d ", fSel1[i1]));
+   for (i2 = 0; i2 < n2; i2++) selList2.Append(Form("%d ", fSel2[i2]));
+   AliDebugClass(1, Form("[%10s] Part #1: [%s] -- evID %6d -- charge = %c -- cut ID = %d --> %4d tracks (%s)", GetName(), (event1 == event2 ? "def" : "mix"), event1->ID(), fCharge[0], fCutID[0], n1, selList1.Data()));
+   AliDebugClass(1, Form("[%10s] Part #2: [%s] -- evID %6d -- charge = %c -- cut ID = %d --> %4d tracks (%s)", GetName(), (event1 == event2 ? "def" : "mix"), event2->ID(), fCharge[1], fCutID[1], n2, selList2.Data()));
    if (!n1 || !n2) {
       AliDebugClass(1, "No pairs to mix");
       return 0;
@@ -441,7 +450,7 @@ Int_t AliRsnMiniOutput::FillPair(AliRsnMiniEvent *event1, AliRsnMiniEvent *event
    
    // external loop
    for (i1 = 0; i1 < n1; i1++) {
-      p1 = event1->GetParticle(selected1[i1]);
+      p1 = event1->GetParticle(fSel1[i1]);
       //p1 = event1->GetParticle(i1);
       //if (p1->Charge() != fCharge[0]) continue;
       //if (!p1->HasCutBit(fCutID[0])) continue;
@@ -454,7 +463,7 @@ Int_t AliRsnMiniOutput::FillPair(AliRsnMiniEvent *event1, AliRsnMiniEvent *event
       AliDebugClass(2, Form("Start point = %d", start));
       // internal loop
       for (i2 = start; i2 < n2; i2++) {
-         p2 = event2->GetParticle(selected2[i2]);
+         p2 = event2->GetParticle(fSel2[i2]);
          //p2 = event2->GetParticle(i2);
          //if (p2->Charge() != fCharge[1]) continue;
          //if (!p2->HasCutBit(fCutID[1])) continue;
index 21607c3..600ee48 100644 (file)
@@ -115,6 +115,8 @@ private:
    TArrayD          fComputed;         //! temporary container for all computed values
    AliRsnMiniPair   fPair;             //! minipair for computations
    TList           *fList;             //! pointer to the TList containing the output
+   TArrayI          fSel1;             //! list of selected particles for definition 1
+   TArrayI          fSel2;             //! list of selected particles for definition 2
    
    ClassDef(AliRsnMiniOutput,1)  // AliRsnMiniOutput class
 };